I just noticed that when I reset a cascade of filters, I don’t always get the response I expect.
I am filtering a block of audio, and since the first sample is not 0, I reset the filters to be at that value, just using reset(value).
I then process the block of audio and take a look at the result.
If I am using a single filter, or a cascade of TPTstatefilters, all seems right (the first value of the filtered output is the same as the input, ie the value used in reset()).
However, if I have a short cascade of filters (2 elliptical filters), and I reset both of them to the input value, then filter the block, the first sample is altered.
I’m not providing code because I think this is a concept question, not a code related issue, but just to be clear on what filters I am using:
::::::::::
I can create any number of dsp::StateVariableTPTFilter() filters,
set them to low pass, then reset to 1, and filter an input block starting with a value of 1.
And the first output sample will be 1
:::::::::
If I create an array (cascade) of filters using this method:
dsp::FilterDesign::designIIRLowpassHighOrderEllipticMethod
and then reset to 1, and filter an input block starting with a value of 1.
My first output sample is 1.13
I am aware that higher order IIR filters are unstable, and of course they can phase distort, but this is a DC signal being fed to a low pass filter. If I reset to 0 and then feed it 0s, it behaves as expected.
Anyway, I can’t figure out if I am misunderstanding something here? Let me know ![]()

