Here are coefficients for 5th and 6th order filters (fs=48kHz) I prepared using separate HPF (c2d)) and LPF (MIM):
4th order HPF, 1st order LPF:
[0.588402730019084 -2.114578549207340 2.574286896638522 -0.919416694862366 -0.367726753456895 0.239032370868995] [1.0 -4.193437345479311 6.853084418397484 -5.397323870680988 2.009149234848459 -0.271472430592242]
4th order HPF, 2nd order LPF:
[[0.5884027300190836 -1.6384145461593100 0.8580879826180272 1.1837389307393180 -1.1416401766192728 -0.0386320187694699 0.1884570981716236] [1.0 -3.384188885614779 3.453610828634393 0.171625555633360 -2.392296872830998 1.376227862809258 -0.224978476938553]
and a plot showing comparison against their analog model:

(green = analog model, red = 5th order filter, black = 6th order filter, small window shows the difference of responses when approaching the Nyqvist frequency)
EDIT2:
Here's Octave source code for to build the filter:
% Octave packages ------------------------------- pkg load signal % other requirements: % Magnitude Invariance method (MIM) -implementation ( one implementation can be found from https://soar.wichita.edu/handle/10057/1564 ) clf; format long; %Sampling Rate Fs = 44100; % A-weighting filter frequencies according to IEC/CD 1672. % Source: https://www.dsprelated.com/showcode/214.php f1 = 20.598997; f2 = 107.65265; f3 = 737.86223; f4 = 12194.217; % Analog model ----------------------------------------------------- A1000 = 1.9997; NUM = [ (2*pi*f4)^2*(10^(A1000/20)) 0 0 0 0]; DEN = conv([1 +4*pi*f4 (2*pi*f4)^2],[1 +4*pi*f1 (2*pi*f1)^2]); DEN = conv(conv(DEN,[1 2*pi*f3]),[1 2*pi*f2]); Ds = tf(NUM, DEN); [Ab, Aa, T] = tfdata(Ds, 'v'); % Digital filter -------------------------------------------------- %LPF1 (MIM method) lporder = 1; % 1 = 5th order A-Weighting filter, 2= 6th order .... w0 = 2 * pi * f4; bC = 1; aC = [1 w0]; AD0 = tf(bC, aC); LP2 = c2dn(AD0^2, 1/Fs, 'mim', lporder, 4096^2, 'lowpass'); % HPF (BLT method) % HPF1 w0 = 2 * pi * f1; bC = [w0 0]; aC = [1 w0]; AD1 = tf(bC, aC); HP1 = c2d(AD1^2, 1/Fs, 'tustin'); % HPF2 w0 = 2 * pi * f2; bC = [w0 0]; aC = [1 w0]; AD2 = tf(bC, aC); HP2 = c2d(AD2, 1/Fs, 'tustin'); % HPF3 w0 = 2 * pi * f3; bC = [w0 0]; aC = [1 w0]; AD3 = tf(bC, aC); HP3 = c2d(AD3, 1/Fs, 'tustin'); % Combine filters FLT = (LP2*HP1*HP2*HP3); % Adjust 0dB@1kHz GAINoffset = abs(freqresp(FLT,1000*2*pi)); FLT = FLT/GAINoffset; % get coefficients [ad, bd, T] = tfdata(FLT, 'v'); ad bd % plot fs2 = Fs/2; nf = logspace(0, 5, fs2); [mag, pha] = bode(Ds,2*pi*nf); semilogx(nf, 20*log10(abs(mag)), 'color', 'g', 'linewidth', 4.0, 'linestyle', '-'); hold on; [mag, pha] = bode(FLT,2*pi*nf); semilogx(nf, 20*log10(abs(mag)), 'color', 'k', 'linewidth', 2.0, 'linestyle', '--'); title('A-Weighting filter'); xlabel('Hz');ylabel('dB'); axis([1 fs2+5000 -200 10]); legend('Analog model', 'Digital (MIM+BLT)', 'location', 'southeast'); grid on;
I have not measured the error curve (dunno how to calculate it against analog model).
EDIT1: Plot showing HF response for low sample rates (4, 8, 16, 32 kHz): 