1
/*******************************************/
2
/* PoleZero (1-pole, 1-zero) Filter Class */
3
/* by Gary P. Scavone, 1999 */
5
/* See books on filters to understand */
6
/* more about how this works. Nothing */
7
/* out of the ordinary in this version. */
8
/*******************************************/
12
PoleZero :: PoleZero() : Filter()
14
inputs = (MY_FLOAT *) malloc(sizeof(MY_FLOAT));
15
outputs = (MY_FLOAT *) malloc(sizeof(MY_FLOAT));
16
b0Coeff = (MY_FLOAT) 1.0;
17
b1Coeff = (MY_FLOAT) 0.0;
18
a1Coeff = (MY_FLOAT) 0.0;
19
gain = (MY_FLOAT) 1.0;
23
PoleZero :: ~PoleZero()
29
void PoleZero :: clear()
31
inputs[0] = (MY_FLOAT) 0.0;
32
outputs[0] = (MY_FLOAT) 0.0;
33
lastOutput = (MY_FLOAT) 0.0;
36
void PoleZero :: setA1(MY_FLOAT coeff)
41
void PoleZero :: setB0(MY_FLOAT coeff)
46
void PoleZero :: setB1(MY_FLOAT coeff)
51
void PoleZero :: setGain(MY_FLOAT aValue)
56
// PoleZero is one pole, one zero filter
57
// Look it up in your favorite DSP text
58
MY_FLOAT PoleZero :: tick(MY_FLOAT sample)
60
MY_FLOAT in_sample = gain*sample;
62
lastOutput = b0Coeff*in_sample + b1Coeff*inputs[0] - a1Coeff*outputs[0];
63
inputs[0] = in_sample;
64
outputs[0] = lastOutput;