Peaking Equalizers

A *peaking equalizer* filter section provides a boost or cut in
the vicinity of some center frequency. It may also be called
a *parametric equalizer* section. The gain far away from the
boost or cut is unity, so it is convenient to combine a number of such
sections in series. Additionally, a high and/or low shelf
(§B.4 above) are nice to include in series with one's peaking
eq sections.

The analog transfer function for a *peak filter* is given by [103,5,6]

where is a two-pole resonator:

The transfer function can be written in the normalized form [103]

where is approximately the desired gain at the boost (or cut), and is the desired bandwidth at the normalized peak frequency (cf. Eq.(E.7)). When , a

It is easy to show that both zeros and both poles are on the unit circle in the left-half plane, and when (a ``cut''), the zeros are closer to the axis than the poles.

The bilinear transform (§I.3.1) can be used to convert the analog peaking equalizer section to digital form. As derived in §I.3.2, the mapping constant is best chosen as , where is the desired peak frequency and is the sampling interval.

Figure B.15 gives a matlab listing for a peaking equalizer section.
Figure B.16 shows the resulting plot for the example
```boost(2,0.25,0.1)`.'' The frequency-response display utility
`myfreqz`, listed in Fig.7.1, can be substituted for
`freqz` (better for Octave).

function [B,A] = boost(g,fc,bw,fs); %BOOST - Design a digital boost filter at given gain g, % center frequency fc in Hz, % bandwidth bw in Hz (default = fs/10), and % sampling rate fs in Hz (default = 1). if nargin<4, fs = 1; end if nargin<3, bw = fs/10; end c = cot(pi*fc/fs); % bilinear transform constant cs = c^2; csp1 = cs+1; Bc=(bw/fs)*c; gBc=g*Bc; nrm = 1/(csp1 + Bc); % 1/(a0 before normalization) b0 = (csp1 + gBc)*nrm; b1 = 2*(1 - cs)*nrm; b2 = (csp1 - gBc)*nrm; a0 = 1; a1 = b1; a2 = (csp1 - Bc)*nrm; A = [a0 a1 a2]; B = [b0 b1 b2]; if nargout==0 figure(1); myfreqz(B,A); % /l/mll/myfreqz.m dstr=sprintf('boost(%0.2f,%0.2f,%0.2f,%0.2f)',g,fc,bw,fs); subplot(2,1,1); title(['Boost Frequency Response: ',... dstr],'fontsize',24); end |

A Faust implementation of the second-order peaking equalizer is
available as the function `peak_eq` in `filter.lib`
distributed with Faust (Appendix K).

[How to cite this work] [Order a printed hardcopy] [Comment on this page via email]

Copyright ©

Center for Computer Research in Music and Acoustics (CCRMA), Stanford University