89 smp_type freq, smp_type srate,
93 smp_type A, omega, sn, cs, alpha, beta;
94 smp_type a0, a1, a2, b0, b1, b2;
96 b = malloc(
sizeof(
biquad));
111 if (freq <= 0.0 || freq >= srate / 2.0) {
116 A = pow(10.0, dbGain / 40.0);
117 omega = 2.0 * M_PI * freq / srate;
120 alpha = sn * sinh(M_LN2 / 2.0 * bandwidth * omega / sn);
133 b0 = (1.0 - cs) / 2.0;
135 b2 = (1.0 - cs) / 2.0;
145 b0 = (1.0 + cs) / 2.0;
147 b2 = (1.0 + cs) / 2.0;
181 b0 = 1.0 + (alpha * A);
183 b2 = 1.0 - (alpha * A);
184 a0 = 1.0 + (alpha / A);
186 a2 = 1.0 - (alpha / A);
193 b0 = A * ((A + 1.0) - (A - 1.0) * cs + beta * sn);
194 b1 = 2.0 * A * ((A - 1.0) - (A + 1.0) * cs);
195 b2 = A * ((A + 1.0) - (A - 1.0) * cs - beta * sn);
196 a0 = (A + 1.0) + (A - 1.0) * cs + beta * sn;
197 a1 = -2.0 * ((A - 1.0) + (A + 1.0) * cs);
198 a2 = (A + 1.0) + (A - 1.0) * cs - beta * sn;
205 b0 = A * ((A + 1.0) + (A - 1.0) * cs + beta * sn);
206 b1 = -2.0 * A * ((A - 1.0) + (A + 1.0) * cs);
207 b2 = A * ((A + 1.0) + (A - 1.0) * cs - beta * sn);
208 a0 = (A + 1.0) - (A - 1.0) * cs + beta * sn;
209 a1 = 2.0 * ((A - 1.0) - (A + 1.0) * cs);
210 a2 = (A + 1.0) - (A - 1.0) * cs - beta * sn;
biquad * BiQuad_new(int type, smp_type dbGain, smp_type freq, smp_type srate, smp_type bandwidth)
Create a new biquad filter with the specified characteristics.