This note is closely related to note “ON LEVEL MEASUREMENTS VIA ITU-T P.56 AND WEIGHTING” (cf. Ref. [1]) and it elaborates on the standard definitions of weighting curves A and C (defined in the analog domain) for the purpose of unbiased digital filtering when taking advantage of the bilinear transformation (cf. Ref. [2]).  It is noted here that a common approach to filtering signals using A and C-weighting filters is to employ the bilinear transformation directly (cf. Ref. [3]). It is also known that such an unqualified approach leads to discrepancies between true versions of A- and C-weighting and the ones obtained via the bilinear transformation. These discrepancies are caused by the non-linearity of the transformation itself.

It is also worth noting that the spectral approach (cf. Ref.[4]) does not lead to any discrepancies of similar nature due to the fact that it does not synthesize an IIR filter from the analog prototype using the bilinear transformation. Instead, it uses the DFT, and, specifically, the FFT-based approach, which allows for a direct use of the original definition of the weighting curves. The only limitation of that approach is associated with the size of the DFT when the input file is large. To overcome that limitation, a modified approach would require the input vector be segmented into smaller pieces. This in turn would require an application of careful concatenation of the output segments to preserve their initial conditions (thus to avoid discontinuities in the concatenated signal).

The approach discussed here is tied to the original approach, i.e., via synthesis of the IIR digital filter through the bilinear transformation, with one addition though: in order to minimize the nonlinear effect of the bilinear transformation, the input data needs to be upsampled and then, after applying the weighting filter, decimated. With that approach the nonlinearity of the bilinear transformation can be adequately mitigated (albeit never removed completely).

The original definition of the A-weighting and C-weighting (as well other types of weighting) is given by Ref. [5].

The transfer function (in the s-domain) of the A-weighting filter is defined as follows:

bilinear-transformation-eq1                                                  (1)


s1 2 πf1;  f1= 20.598997;                                                                                     (2a)

s2 2 πf2;  f2= 107.65265;                                                                                     (2b)

s3 2 πf3;  f3= 737.86223;                                                                                     (2c)

s4 2 πf4;  f4= 12194.217;                                                                                     (2d)

KA = (2 πf4)2.10A1000/20;  A1000 = 1.9997;                                                       (2e)

Based on (1), the amplitude characteristic AA(f) of the A-weighting filter is as follows:

bilinear-transformation-eq2f                    (2f)



The transfer function (in the s-domain) of the C-weighting filter is defined as follows:

bilinear-transformation-eq3                                                                                     (3)


s1 2 πf1;  f1= 20.598997;                                                                                       (4a)

s4 2 πf4;  f4= 12194.217;                                                                                       (4b)

KC = (2 πf4)10C1000/20;  C1000 = 0.0619;                                                         (4c)

Based on (3), the amplitude characteristic AC(f)  of the C-weighting filter is as follows:

bilinear-transformation-eq4d                                                                          (4d)

A straightforward and common method of generating the b-type (MA part) and a-type (AR part) coefficients of the IIR digital filters representing the A and C-weighting is via applying the bilinear transformation linking z-domain to s-domain. The transformation is given below (Ref.[2]):


where T = Fs-1; Fs is the sampling frequency; z is complex variable, as used in the Z-transform.


By substituting variable s in (1) and in (3) with (5) we arrive at the IIR digital filters (thus represented in the z-domain) whose prototypes have originally been in the s-domain. Since the bilinear transformation (5) does not link the analog frequency domain s to the digital frequency domain z in a linear fashion (the illustration of that is given in Figure 1), then the shapes of the A-weighting amplitude characteristics and the C-weighting characteristics are skewed, according to the formula (6a) given below:



or, equivalently,



where ω is the angular analog frequency (i.e., ω =2.π .f) and Ω is the corresponding digital frequency.

This nonlinear skewing effect is called a frequency compression or frequency warping, and it is due to the nonlinearity of the arctangent function (cf. Ref. [2]).


Figure 1: Mapping between the frequency variables ω and Ω resulting from the bilinear transformation (5).


We notice though that for frequencies in the neighborhood of zero, the linear approximation can be applied. Therefore, in order to overcome, or rather mitigate, the frequency warping effect, before filtering the signal using the A- weighting filter or the C-weighting filter via the IIR filters generated based on the analog prototypes, it is recommended first to upsample the signal, then filter it and then downsample it by the same factor. From the practical viewpoint, upsampling and downsampling by the factor of 2 is adequate in the most cases. If the signal energy is concentrated in the upper end of the frequency scale, particularly in the close vicinity of the Nyquist frequency Fs/2, the upsampling and downsampling by a greater factor (say, 4) will significantly reduce the warping effect. Closer examination of Figure 1 as well as Equations 6a or 6b leads to more definite estimation of the adequate resampling factor for the given signal.


Failing complying with the above outlined resampling procedures, discrepancies in estimating signal levels using dBA and dBC units will occur. Note that there is no closed-form formula allowing to universally estimate the discrepancy because this discrepancy is a function of the signal spectrum. It is possible that in some cases this discrepancy is quite tangible. In typical cases though this discrepancy usually does not exceed a couple of decibels and often is smaller than that. Illustrations of the warping effect for the A-weighting and the C-weighting are shown in Figures 2 and 3, respectively.


Figure 2: Comparison between the original A-weighting curve (analog form, as per Ref.[5]) and its digital versions generated using the bilinear transformation, for two sampling frequencies, 8kHz and 16kHz.


Figure 3: Comparison between the original C-weighting curve (analog form, as per Ref.[5]) and its digital versions generated using the bilinear transformation, for two sampling frequencies, 8kHz and 16kHz.


It is worth noting that for the most cases when the signal spectrum extends from the low frequencies through the upper frequencies (as opposed to the cases where it is concentrated mainly at the higher frequencies), the warping effect  impact on the level estimations is greater for the A-weighting than for the C—weighting, for the same sampling frequencies.


VOCAL Technologies practices include standard compliance with A and C weighting both in analog as well as digital domains.

More Information


  2. Digital Signal Processing, Principles, Algorithms, and Applications, 2nd Edition, J.G. Proakis and D.G. Manolakis, Macmillan Publishing, 1992.
  3. Matlab Central, On generation of normalized A-weighting and  C-weighting, 1997
  4. A-weighting Filter with Matlab Implementation, Hristo Zhivomirov, Matlab Central, 2014.
  5. International Standard IEC 61672; 2003.