2
$\begingroup$

According to JOS on stiff-string synthesis, stiff strings (like on a piano) introduce inharmonicity (i.e. the harmonics of the tone are not all in tune) due to different frequency components of the wave travelling at different speeds. This inharmonicity is called "dispersion".

According to another page on the same site about modelling this effect, he says it can be done by putting an LTI (linear, time-invariant) filter of some sort at one end of the delay line (in waveguide modelling, a delay line is used to model a physical string) before feeding the output back into the delay line.

Somehow, this LTI filter introduces inharmonicity, or frequency distortion. But by definition, an LTI filter does not introduce any new frequencies into the signal (and thus can be accurately represented by a frequency-response graph).

How can inharmonic tones be introduced by an LTI filter? Am I missing something obvious? Do I not understand my DSP basics well enough?

$\endgroup$
  • $\begingroup$ "due different frequency components of the wave travelling at different speeds" I thought it was because the string is shorter at higher frequencies because the ends have to bend in a curve instead of at an angle. $\endgroup$ – endolith Mar 23 '13 at 18:29
  • $\begingroup$ According to most of the literature I've read, it's caused by the stiffness of the string introducing a displacement-dependent restoring force, which causes high-frequency components to travel faster than low-frequency components. See simonhendry.co.uk/wp/wp-content/uploads/2012/08/… which references asadl.org/jasa/resource/1/jasman/v36/i1/p203_s1?isAuthorized=no $\endgroup$ – bryhoyt Mar 23 '13 at 20:06
2
$\begingroup$

From your question, it sounds like you think the all-pass filter is an independent post-processing step that takes as its input the output of the classic Karplus-Strong model (delay line, LP filter, close the loop). If that would be the case, yes, it would be very surprising indeed that new harmonics would appear! But here, the allpass filter is part of the closed loop. You can intuitively think about what it does in these terms: it is a short delay, with a delay value which is frequency-dependent (phase shifter). This gets added to the delay provided by the main $N$ samples delay line, and causes the lower frequencies to "see" a longer loop. So the highest harmonics will have a period close to $N$, and the lower harmonics will have a lower period. The overall transfer function of the loop is no longer a comb with regular spacing between teeth, but a comb with a slowly increasing gap between teeth.

What you are forgetting also is that this whole system (delay line, all-pass filter combined with loss LP filter, close the loop) which is a LTI, is excited by a burst of white noise. So the input signal contains all frequencies, and there's nothing surprising or contradictory with the fact that altering the transfer function of a LTI can change its frequency response so that its resonant frequencies are shifted, or so that new bumps appear.

If you need to convince yourself... System A is a band-pass filter with a frequency of 1kHz. System B is a band-pass filter with a frequency of 1kHz ; in parallel with a band-pass filter with a frequency of 2kHz. Both are excited by white noise. In the second case you have "added" a LTI filter in the system; and a new frequency has appeared. There's no magic in this - you have just shaped the frequency response of the system differently to sculpt the input in new ways.

$\endgroup$
  • $\begingroup$ This is a very helpful answer, and I think the first paragraph pretty much clears up my question -- I guess the LTI filter is a part of the oscillation generation ("closed loop") in a way that I haven't really thought about before. $\endgroup$ – bryhoyt Mar 23 '13 at 19:39
  • $\begingroup$ I think the second 2 paragraphs are heading in the wrong direction -- it may make sense with Karplus-Strong like you say, but a) we're talking about Digital WaveGuide modelling, which is related to K.S., but excited by travelling waves (harmonic oscillations), not white noise, and b) The point of D.W.G. is that the oscillations are modelled by the delay line, not primarily by the filter. So while a "smart" filter could choose certain frequencies from white input, that's begging the question of what's happening inside the filter's "black-box" -- that "what" is the problem solved by D.W.G. $\endgroup$ – bryhoyt Mar 23 '13 at 19:54
  • $\begingroup$ I don't think the system you have described (delay, allpass, attenuation low-pass, close the loop) does self-oscillate. It still needs a wide-band excitation signal in which it will sculpt harmonic peaks. The intuition that pushed you to post a question ("there's no free lunch, a LTI system can't make a frequency component appear from nothing") is correct - it has to be there in the first place in its input. $\endgroup$ – pichenettes Mar 23 '13 at 20:13
  • $\begingroup$ In my understanding, digital waveguides generate the oscillation by bouncing left-and-right-travelling waves back-and-forth on a string (modelled by a delay line for each travelling wave). The initial state is the shape of the string between the endpoints (eg a triangle when plucked). The software simply shifts this input by one sample each time division, to mimic the travelling of the wave. In the simplest scenario the wave is reflected at the endpoints. More complex waveguides turn the endpoints into an arbitrary filter, like the one I'm describing for stiff string modelling. $\endgroup$ – bryhoyt Mar 24 '13 at 7:47
  • 1
    $\begingroup$ The excitation is a triangle wave multiplied by a square window (since it is a single cycle). In the frequency domain, its spectrum is thus that of a triangle convolved by a sinc. The convolution by a sinc widens the harmonics - the inharmonic tones are there in the first place in the excitation signal, ready to be shaped by the system. $\endgroup$ – pichenettes Mar 24 '13 at 10:35

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.