summaryrefslogtreecommitdiff
path: root/portaudio/qa/loopback/src/biquad_filter.h
blob: 0895abae73ea24b7deac81b48338a17c5c94cb1a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#ifndef _BIQUADFILTER_H
#define _BIQUADFILTER_H


/**
 * Unit_BiquadFilter implements a second order IIR filter.
 *
 * @author (C) 2002 Phil Burk, SoftSynth.com, All Rights Reserved
 */

#define BIQUAD_MIN_RATIO     (0.000001)
#define BIQUAD_MIN_Q         (0.00001)

typedef struct BiquadFilter_s
{
    double      xn1;    // storage for delayed signals
    double      xn2;
    double      yn1;
    double      yn2;

    double      a0;     // coefficients
    double      a1;
    double      a2;

    double      b1;
    double      b2;

    double      cos_omega;
    double      sin_omega;
    double      alpha;
} BiquadFilter;

void BiquadFilter_SetupHighPass( BiquadFilter *filter, double ratio, double Q );
void BiquadFilter_SetupNotch( BiquadFilter *filter, double ratio, double Q );

void BiquadFilter_Filter( BiquadFilter *filter, float *inputs, float *outputs, int numSamples );

#endif