back to list

Rigid vertical springs now supported

🔗John A. deLaubenfels <jdl@adaptune.com>

9/3/2001 8:57:08 AM

Sorry to say I've not been able to keep up with the tuning-math list for
the past couple of months. If I've missed a query, apologies.

I've finally done something that's been on my list since the spring
model debuted in Jan 2000: ability to make vertical springs extremely
rigid compared to other spring classes, yet still relax the matrix in
a finite (reasonable) amount of time.

When vertical springs are extremely rigid, the entire set of notes
sounding at a given moment needs to relax as a unit, so that weaker
grounding and horizontal springs aren't left pushing at a single node
of a rigid monolith. Accordingly, I simply created a class NodeGroup,
so far used to make a collection of all simultaneously sounding notes
(thus catching up all the very rigid vertical springs between them).

NodeGroup relaxation does not _replace_ relaxation of individual nodes;
this still needs to take place to resolve non-self-consistent vertical
springs, such as are found in full diminished 7ths, augmented triads,
and chain-of-fifth chords.

In a test run, I multiplied the "usual" vertical spring coefficient by
2^16 (65536). Using node-only relaxation, this would pretty much
"never" converge. With the new technique, convergence happens very
quickly. Yay!!!

Still, I'd like to have even better relaxation techniques at hand. I'm
thinking of making the spring matrix much larger, by forcing small
horizontal time slices even when notes sound consistently. This would
allow for gradual pitch shift during such times, which might be a
useful part of an ideal adaptive technique. But, I can foresee terrible
relaxation problems: though vertical and grounding spring constants are
cut in half as the time slice is cut in half, each horizontal spring
stiffness _doubles_, since these work in series rather than in parallel.

Any suggestions for how to deal with this would be welcome! My best
guess so far is what I'm calling a "plausible displacement vector", in
which one node is given primary focus, and nodes farther removed are
assumed to displace less (by a factor to be guessed before the
relaxation calculation takes place). Finding an ideal PDV seems akin
to electric circuit analysis, in which springs are replaced by
resistors. Unfortunately, I know little about solving such problems!

JdL