SPUC
3.0
|
Template Class for Allpass halfband IIR Filter. More...
#include <iir_allpass1_halfband.h>
Public Member Functions | |
iir_allpass1_halfband (Coeff c0, Coeff c1, long round_bits=0) | |
void | reset () |
reset More... | |
Numeric | clock (Numeric input) |
Shift inputs by one time sample and place new sample into array. More... | |
char | ready (void) |
Public Attributes | |
char | even |
Protected Attributes | |
allpass_1< Numeric, Coeff > | A0 |
Keeps track of which filter to clock. More... | |
allpass_1< Numeric, Coeff > | A1 |
Numeric | out0 |
Individual filter outputs. More... | |
Numeric | out1 |
Template Class for Allpass halfband IIR Filter.
The filter is a combination of 2 Allpass sections of the form G(z) = (a*z*z + 1)/(z*z+a) so that the overall H(z) is H(z) = 1/z*G(z,a0) + G(z,a1) The combination of these two allpass functions result in a lowpass/highpass complementary pair. The class only uses the low pass filter. This is similar to allpass_iir, except since this is used as a halfband filter the output samples are decimated by 2. So that if the member function clock is called at the higher (input) sampling rate, the outputs are only valid even second sample. This is taken advantage off by running the individual sections effectively at the lower rate. The invalid samples are set to zero. This class needs the allpass_1 class
|
inline |
|
inline |
Shift inputs by one time sample and place new sample into array.
Referenced by SPUC::resampler< SPUC::complex< CNumeric > >::update().
|
inline |
Referenced by SPUC::resampler< SPUC::complex< CNumeric > >::update().
|
inline |
reset
|
protected |
Keeps track of which filter to clock.
The 2 1st order allpass filters
|
protected |
char SPUC::iir_allpass1_halfband< Numeric, Coeff >::even |
|
protected |
Individual filter outputs.
|
protected |