can someone give me a hint for a paper where this stuff is from?
From there: http://www.cmsa.wmin.ac.uk/~artur/Poly.html
There is also this library, implementing the same filter, but optimised for down/upsampling and ported to SSE and 3DNow!:
There is an error in the 12th order, steep filter coefficients. Having checked the output against that produced by HIIR (see previous comment), i have identified the source of the error - the 4th b coefficient 0.06329609551399348, should be 0.6329609551399348.
you also need to delete the pointers inside the array
for (int i=0;i<numfilters;i++)
some questions.. is it normal for these halfband filters to cause significant gain loss? sonogram analysis shows a decrease in SNR if I have read the results correctly.
if using these filters for oversampling and I do this:
decimate (discard samples)
then presumably the second halfband filter does the antialiasing at half the new sampling rate?
Hello, I'm getting the high pass from the function by subtracting the 'oldout' variable.
But this does not make an ideal QMF, I'm getting pass-band aliasing, so I guessing the phase is off slightly between the low and high.
Is this the correct way of getting the high band?
Is the cutoff at 20kHz? What sample rate are these coefficients for? How would I calculate suitable coefficients for arbitrary sample rates?
It is worth noting that if these filters are being used for upsampling/downsampling, the "noble identity" can be used to reduce the CPU cost. The basic idea is that operations that can be expressed in the form:
filter that uses z^-N for its states -> downsample by N
can be rearranged to use the form
downsample by N -> filter that uses z^-1 for its states
The same property holds true for upsampling. See
for more details.
For the above code, this would entail creating an alternative allpass process function, that uses the z^-1 for its states, and then rearranging some of the operations.