# Quantifying the frequency shift of a delay with LP filtered feedback

I am working at a Karplus-Strong sound synthesis technique where an excitation impulse is subjected to a delay with feedback and a one pole LP filter in the feedback line. The process is simply y[0]=(x+ky)[-n] Where x is the input signal, y is the output signal, n is the delay length in samples in the circular delay buffer and k is the feedback factor from 0 to 1. If no filtering is applied at the feedback line, the resulting frequency will be

sample rate / n.

If I apply a simple one pole LP filter in the feedback line, which is very effective for simulation of plucked strings, of form

y[0]=x+f*(y[-1]-x)

where f is the filtering factor from 0 to 1, I get a frequency shift which is in some manner proportional to f (the higher f, the higher the shift downwards in frequency).

My problem is, I have no means to quantify this shift, the underlying math is likely too complex for me. But I would like to discover the exact relationship linking f and n so I can compensate n in function of f in order to avoid detuning (n is not integer but a real number becsuse I am using interpolation to read my samples from the circular buffer). The only thing I discovered is that such function D m=D(n,f) always passes by 0 for f=0 and by 1 for f=0.5 and likely goes to infinity for f=1 but it is neither a suitably scaled hyperbole nor exponential but something else.. Thanks in advance

• This is a linear process so not clear to me how you would get a frequency shift. Are you absolutely sure the frequency shift you are experiencing is due to this filter? Feb 12 '20 at 0:21
• @DanBoschen : the frequency that is shifted is not the input frequency, but the peak of the frequency response envelope in response to white noise or an impulse as the input. Feb 12 '20 at 2:44
• @hotpaw2 Ah I see, thanks, that makes more sense now. Feb 12 '20 at 2:54
• @elena I am not quite following your formula and how the resulting frequency would be sample rate /n. Is your process also y[m]= x[m-n] + k y[m-n] where n is the delay in samples as you defined? y[0] only gives the result for one sample, so it is clearer if you can describe every sample in y as y[m] or some other index. Please clarify Feb 12 '20 at 12:18
• The process is simply a delay with feedback, how would you describe it ? I think y[t]=x[t-n]+b*y[t-n] is the correct equation, b being the feedback factor. Plus, in the feedback line there is a 1 pole LP filter. It is the so called Karplus Strong process Feb 13 '20 at 18:00