I'm trying to improve the response at lower sampling frequencies (you know the issue close Nyqvist) but, as my math skills are not very good .... I know couple biquad optimization articles but would need help with the conversion of the needed equations to non complex c++ code as for an example. ATM, I'm trying to solve how to use optimization method described in Martin Vicanek's fresh article Matched Second Order Digital Filters (chapter 4) but, with optimizating only b coefficients the output is wrong (its ok at low frequencies only). If the method is suitable for say RIAA coefficients which are calculated this way:
double a0, a1, a2, b0, b1, b2;
double fs = 96000.0;
//timeconstants (case RIAA):
// frequency -> time conversion 1/(2*pi*fc) (= R*C)
//poles
double p1 = 3180e-6; // 1/(2*pi*50.05Hz)
double p2 = 75e-6; // 2212Hz
//zeros
double z1 = 318e-6; // 500.5Hz
double z2 = 0.0; // use 3.18e-6 for Neumann pole (50kHz)
double pole1= exp(-1.0/(fs*p1));
double pole2 = exp(-1.0/(fs*p2));
double zero1= exp(-1.0/(fs*z1));
double zero2 = exp(-1.0/(fs*z2));
a0 = 1.0; // 1.0
a1 = -pole1 - pole2; // -0.967774
a2 = pole1 * pole2; // 0.0
b0 = 1.0; // 1.0
b1 = -zero1 - zero2; // -1.867057
b2 = zero1 * zero2; // 0.867481
, then I suppose some optimization equations for a coefficients is needed as well?
Any help in this would be appreciated.