I'm trying to find out if the correction (Jackson, Nelatury, Mecklenbräuker) could improve the (IIM based) filter response near Nyqvist.
Here's my c++ routine (which is used for to calculate various RIAA and non-RIAA filters by just changing the timeconstant values and samplerate):
double a0, a1, a2, b0, b1, b2; double fs = 44100; //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; // 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.931176 a2 = pole1 * pole2; // = 0 b0 = 1.0; // = 1.0 b1 = -zero1 - zero2; // = -1.731986 b2 = zero1 * zero2; // = 0.733838
Tried to google "ready to use" solution of this but the only source code I found few papers I could use for correction.
Bypassed the above mentioned papers. Improved the method so that now there's no need for additional correction biquad but by using z2 (which is unused) for the correction. One can decide where the error lies. Result: