1 #ifndef _BIQUADFILTER_H
2 #define _BIQUADFILTER_H
3 
4 
5 /**
6  *	Unit_BiquadFilter implements a second order IIR filter.
7  *
8  * @author (C) 2002 Phil Burk, SoftSynth.com, All Rights Reserved
9  */
10 
11 #define BIQUAD_MIN_RATIO     (0.000001)
12 #define BIQUAD_MIN_Q         (0.00001)
13 
14 typedef struct BiquadFilter_s
15 {
16     double      xn1;    // storage for delayed signals
17 	double      xn2;
18 	double      yn1;
19 	double      yn2;
20 
21 	double      a0;    // coefficients
22 	double      a1;
23 	double      a2;
24 
25 	double      b1;
26 	double      b2;
27 
28 	double      cos_omega;
29 	double      sin_omega;
30 	double      alpha;
31 } BiquadFilter;
32 
33 void BiquadFilter_SetupHighPass( BiquadFilter *filter, double ratio, double Q );
34 void BiquadFilter_SetupNotch( BiquadFilter *filter, double ratio, double Q );
35 
36 void BiquadFilter_Filter( BiquadFilter *filter, float *inputs, float *outputs, int numSamples );
37 
38 #endif
39