This method I now call Christian's filter design method
Algebraic minimum-phase variant of sinc function
-
Christian Budde Christian Budde https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=25572
- KVRAF
- 1538 posts since 14 May, 2004 from Europe
To remove the problems around nyquist you could also use a higher order transformation (as suggested by RBJ). Or you could calculate the spectral difference between the original analog filter and the IIR Biquad to design a short additional FIR filter. This filter can be created for example by zeroing the phase, to make a linear phase correction filter. However I think it's more useful if it is minimum phase, so you'll need the linear phase->minimum phase transformation.
This method I now call Christian's filter design method
This method I now call Christian's filter design method
- KVRAF
- Topic Starter
- 4030 posts since 7 Sep, 2002
You are without doubts a clever guy. 'Additional FIR filter' is a good solution, but it increases filter order.Christian Budde wrote:To remove the problems around nyquist you could also use a higher order transformation (as suggested by RBJ). Or you could calculate the spectral difference between the original analog filter and the IIR Biquad to design a short additional FIR filter. This filter can be created for example by zeroing the phase, to make a linear phase correction filter. However I think it's more useful if it is minimum phase, so you'll need the linear phase->minimum phase transformation.
This method I now call Christian's filter design method
I still have hopes to find a way to extend method offered by me into a usable one.
-
Christian Budde Christian Budde https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=25572
- KVRAF
- 1538 posts since 14 May, 2004 from Europe
Details...Aleksey Vaneev wrote:'Additional FIR filter' is a good solution, but it increases filter order.
- KVRAF
- Topic Starter
- 4030 posts since 7 Sep, 2002
-
Music Engineer Music Engineer https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=15959
- KVRAF
- 4379 posts since 8 Mar, 2004 from Berlin, Germany
so you're going to sinc-interpolate filter coefficients. i can see, that this should work in the FIR-case - you say that it works for the feedback-path too, because it basically IS a FIR applied in a feedback path - did i get that right? jaaa, seems to make sense. however the problem with frequency-warping due to the bilinear transform has been solved for eq's by mr. orfanidis:
http://www.ece.rutgers.edu/~orfanidi/ece521/peq.pdf
have you considered to the scale the angles of the poles and zeros instead of interpolating coeffs? not sure if this will work, but it makes intuively sense (at least to me)
the devil is always in the detail!
http://www.ece.rutgers.edu/~orfanidi/ece521/peq.pdf
have you considered to the scale the angles of the poles and zeros instead of interpolating coeffs? not sure if this will work, but it makes intuively sense (at least to me)
the devil is always in the detail!
- KVRAF
- Topic Starter
- 4030 posts since 7 Sep, 2002
Orfanidis PEQ does not produce good shape PEQ - it does have a 'prescribed' gain at Nyquist (/2) freq, but bell's shape as far as I know, is distorted a lot.braindoc wrote:so you're going to sinc-interpolate filter coefficients. i can see, that this should work in the FIR-case - you say that it works for the feedback-path too, because it basically IS a FIR applied in a feedback path - did i get that right? jaaa, seems to make sense. however the problem with frequency-warping due to the bilinear transform has been solved for eq's by mr. orfanidis:
http://www.ece.rutgers.edu/~orfanidi/ece521/peq.pdf
have you considered to the scale the angles of the poles and zeros instead of interpolating coeffs? not sure if this will work, but it makes intuively sense (at least to me)
the devil is always in the detail!
IIR (recursive) part is a FIR, but working as a deconvolution. This is a nice piece of knowledge as well (strangely I've not encountered it anywhere) - since knowing this fact alone helps to produce stable IIR filters (response of this IIR part should not contain zero spectral components from 0 to pi to be stable - can't see any other unstability reasons).
Another 'derivative' piece of knowledge is that you can simply swap IIR and FIR parts, and have an exact inverse filter (be sure to check FIR part for zero spectral components first).
I have not 'mastered' poles and zeros design yet. I know how it works and how poles/zeros are transformed into filter coefficients, but I do not see a logic behind putting poles/zeros in certain places - looks like a voodoo, and you may be sure you've put them correctly only after obtaining real FIR+IIR filter coefficients.
-
Music Engineer Music Engineer https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=15959
- KVRAF
- 4379 posts since 8 Mar, 2004 from Berlin, Germany
voodoo? i find, to think in terms of poles and zeros is the most straightforward way to think about filters, there is. when you start with a biquad with real coefficients and convert them into poles and zeros (by finding the roots of the quadratic polynomials), you'll end up with either two real poles (or zeros) or two complex conjugate poles (or zeros). in the case of a modification of complex conjugate poles (zeros), all you need to ensure real coeffs is to modify them always pair-wise. after such a modification you convert back to biquad coeffs by simply multiplying out the two first order complex transfer-functions. if everything has gone right, the imaginary parts of the biquad-coeffs must vanish.
- KVRAF
- Topic Starter
- 4030 posts since 7 Sep, 2002
braindoc, the most 'bad' problem with z-plane pole/zero design is that it does not take z-phase shift into account. So, you can't count for stable shape when moving poles/zeros around unit circle. When you are close to pi you have one shape, when you are close to 0 you have another shape (so your example with pole/zero angle scaling won't work out of the box).
- KVRAF
- Topic Starter
- 4030 posts since 7 Sep, 2002
Another obvious, but useful knowledge about FIR/IIR parts is that you can process them separately. For example, when you have 5 peaking filters, you may recombine them into a single filter, with a high probability of order reduction. E.g. instead of 10th order (if you run them in sequence) you may obtain 8th order filter in a straightforward way: by first convolving FIR parts of all filters, and then convolving IIR parts of all filters. It is probable that some left-most or right-most coefficients in resulting lots will turn into zeros, and you may safely skip them thus reducing overall filter order (and maybe group delay).
Also FIR processing part can be assembled into a more efficient code fragment. IIR part filtering may follow in another code fragment, running independently.
Also FIR processing part can be assembled into a more efficient code fragment. IIR part filtering may follow in another code fragment, running independently.
-
Music Engineer Music Engineer https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=15959
- KVRAF
- 4379 posts since 8 Mar, 2004 from Berlin, Germany
z phase shift? what is this? but yeah, the shape changes a bit when moving the poles and zeros around. you want to just shift the exact shape of the freq-response left or right, i guess?
as for the order-truncation - i would be very careful with doing such dirty things with high order (direct-form) IIR's. i found that i can easily run into instable operation with orders above 12-16 even without any truncation (double presicion design of z-plane poles and zeros -> convolution of the (complex) linear factors to get the coeffs). any approximation can make that only worse, i think. but nowadays i prefer to use biquad-cascades instead of direct-form anyway - numerical problems automagically disappear
as for the order-truncation - i would be very careful with doing such dirty things with high order (direct-form) IIR's. i found that i can easily run into instable operation with orders above 12-16 even without any truncation (double presicion design of z-plane poles and zeros -> convolution of the (complex) linear factors to get the coeffs). any approximation can make that only worse, i think. but nowadays i prefer to use biquad-cascades instead of direct-form anyway - numerical problems automagically disappear
- KVRAF
- Topic Starter
- 4030 posts since 7 Sep, 2002
z phase-shift is the complex phase-shift signal takes when you move it forward or backward by 1 sample relative to sample at 'time zero'. (by complex I mean that each spectral component is rotated by some degree - frequency at pi takes most phase-shift: +/- pi radians, frequencies near 0 take almost no phase-shift).braindoc wrote:z phase shift? what is this? but yeah, the shape changes a bit when moving the poles and zeros around. you want to just shift the exact shape of the freq-response left or right, i guess?
As I've said, IIR filter's stability is not a magical thing - it can be proved (frequency response should not have any dips that turn into zeros, and that gain change span inbetween 0 and pi can be represented by floating point value - e.g. if gain change span is near 80 dB you may use 32-bit floats, if it is larger you have to use better resolution - otherwise spectral components where gain suppression is greatest will be truncated thus leading to unstability).braindoc wrote:as for the order-truncation - i would be very careful with doing such dirty things with high order (direct-form) IIR's. i found that i can easily run into instable operation with orders above 12-16 even without any truncation (double presicion design of z-plane poles and zeros -> convolution of the (complex) linear factors to get the coeffs). any approximation can make that only worse, i think. but nowadays i prefer to use biquad-cascades instead of direct-form anyway - numerical problems automagically disappear
Beside that I was talking about removing zero left-most and right-most elements - this is not a kernel truncation.
Last edited by Aleksey Vaneev on Sun Mar 04, 2007 7:41 pm, edited 2 times in total.
- KVRAF
- Topic Starter
- 4030 posts since 7 Sep, 2002
By the way, peaking filters with low center frequencies absolutely require 64-bit resolution, because if you study their FIR parts you'll see that gain change spans 80 dB (from low frequencies to high frequencies). This means that resolution of lower frequencies is lowered by 80 dB relative to high frequencies, add 90 dB of dynamic range, and you have 170 dB of difference between the quietest low-freq signal, and the loudest high-freq signal, while 32-bit floats have 144 dB dynamic range (it is scalable, but that's why I'm talking about 170 dB difference).
(it is a bit of number mangling, but you get the idea).
(it is a bit of number mangling, but you get the idea).
-
Music Engineer Music Engineer https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=15959
- KVRAF
- 4379 posts since 8 Mar, 2004 from Berlin, Germany
i'm not sure if i understand your stabilty criterion - you say, the sequence of a-coefficients (viewed as a FIR-filter impulse response) should not have zeros in its fourier transform in order to ensure stability?
- KVRAF
- Topic Starter
- 4030 posts since 7 Sep, 2002
Yes, this is right - it should not have zeros in its power spectrum (otherwise response inversion/deconvolution is unrealizable).braindoc wrote:i'm not sure if i understand your stabilty criterion - you say, the sequence of a-coefficients (viewed as a FIR-filter impulse response) should not have zeros in its fourier transform in order to ensure stability?
-
Music Engineer Music Engineer https://www.kvraudio.com/forum/memberlist.php?mode=viewprofile&u=15959
- KVRAF
- 4379 posts since 8 Mar, 2004 from Berlin, Germany
mmhh. interesting. must think about it...
