IIR filters and frequency warping

DSP, Plugin and Host development discussion.
Post Reply New Topic
RELATED
PRODUCTS

Post

Hello everybody !

If I want the digital equivalent of the analog transfer function of a (linear) filter (no zero-delay or nonlinear stuff here), I need to apply frequency warping stuff, because I use the bilinear transform. To proceed, I have to correct the frequency cutoff values before the transformation, so the frequency response of the filter in the digital domain will match more the analog one.

This operation is easy when we want to calculate, say the classic biquads / SVF digital implementation coefficients, because the cutoff frequency is displayed explicitely in the equations. Moreover, it is also possible to simplify a lot the equations needed to get the digital filters coefficients, using remarkable indentities, when we want to change one parameter during the execution of the filter (see for example the formulas in the RBJ cookbook).

My question is the following : how do I apply the frequency warping efficiently if I want to get the digital implementation of any analog filter, when I have only the numerical values of its coefficients, and no formula where the frequency cutoff values are explicit ?

I think one way to do that would be to calculate the poles and zeros of the analog filter, to apply the frequency warping on these frequency-like values, and then calculate again the coefficients in the Laplace domain, but I think there may be another way more efficient to do the things too...

Thanks in advance !

Post

Wolfen666 wrote:Hello everybody !

If I want the digital equivalent of the analog transfer function of a (linear) filter (no zero-delay or nonlinear stuff here), I need to apply frequency warping stuff, because I use the bilinear transform. To proceed, I have to correct the frequency cutoff values before the transformation, so the frequency response of the filter in the digital domain will match more the analog one.

This operation is easy when we want to calculate, say the classic biquads / SVF digital implementation coefficients, because the cutoff frequency is displayed explicitely in the equations. Moreover, it is also possible to simplify a lot the equations needed to get the digital filters coefficients, using remarkable indentities, when we want to change one parameter during the execution of the filter (see for example the formulas in the RBJ cookbook).

My question is the following : how do I apply the frequency warping efficiently if I want to get the digital implementation of any analog filter, when I have only the numerical values of its coefficients, and no formula where the frequency cutoff values are explicit ?

I think one way to do that would be to calculate the poles and zeros of the analog filter, to apply the frequency warping on these frequency-like values, and then calculate again the coefficients in the Laplace domain, but I think there may be another way more efficient to do the things too...

Thanks in advance !
The idea of the "cutoff" choice in the frequency warping is that you can choose a single point on the frequency response that will map exactly to the same value (there is exactly one degree of freedom to play with). Customarily the cutoff is chosen as such point, but you can choose any other one. (This is actually explained in S.3.9 of the VAFilterDesign book)

Post

Hello !

If I have two first order lowpass filters, which have a different cutoff frequency, I can apply the frequency warping to each one a different way, so their digital implementation will have a frequency response which match the one from the analog filter, for each cutoff frequency, right ? So there are two degrees of freedom here isn't it ?

Well, you have answered to my question partially :D

Post

Wolfen666 wrote:So there are two degrees of freedom here isn't it ?
Because in this case you apply the prewarping to two different transfer functions separately ;) This will change their combined transfer function is a non-mappable way, though (it won't preserve the relationship between magnitude and phase).

Post

OK, thanks for the information :wink:

Post Reply

Return to “DSP and Plugin Development”