SPUC  3.0
Public Member Functions | Public Attributes | Protected Attributes | List of all members
SPUC::iir_allpass1_halfband< Numeric, Coeff > Class Template Reference

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
 

Detailed Description

template<class Numeric, class Coeff = float_type>
class SPUC::iir_allpass1_halfband< Numeric, Coeff >

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

allpass_halfband.gif
Author
Tony Kirke
iir_allpass1_halfband.png

Constructor & Destructor Documentation

template<class Numeric, class Coeff = float_type>
SPUC::iir_allpass1_halfband< Numeric, Coeff >::iir_allpass1_halfband ( Coeff  c0,
Coeff  c1,
long  round_bits = 0 
)
inline

Member Function Documentation

template<class Numeric, class Coeff = float_type>
Numeric SPUC::iir_allpass1_halfband< Numeric, Coeff >::clock ( Numeric  input)
inline

Shift inputs by one time sample and place new sample into array.

Referenced by SPUC::resampler< SPUC::complex< CNumeric > >::update().

template<class Numeric, class Coeff = float_type>
char SPUC::iir_allpass1_halfband< Numeric, Coeff >::ready ( void  )
inline
template<class Numeric, class Coeff = float_type>
void SPUC::iir_allpass1_halfband< Numeric, Coeff >::reset ( void  )
inline

reset

Member Data Documentation

template<class Numeric, class Coeff = float_type>
allpass_1<Numeric,Coeff> SPUC::iir_allpass1_halfband< Numeric, Coeff >::A0
protected

Keeps track of which filter to clock.

The 2 1st order allpass filters

template<class Numeric, class Coeff = float_type>
allpass_1<Numeric,Coeff> SPUC::iir_allpass1_halfband< Numeric, Coeff >::A1
protected
template<class Numeric, class Coeff = float_type>
char SPUC::iir_allpass1_halfband< Numeric, Coeff >::even
template<class Numeric, class Coeff = float_type>
Numeric SPUC::iir_allpass1_halfband< Numeric, Coeff >::out0
protected

Individual filter outputs.

template<class Numeric, class Coeff = float_type>
Numeric SPUC::iir_allpass1_halfband< Numeric, Coeff >::out1
protected

The documentation for this class was generated from the following file: