pareq
Implementation of Zoelzer's parametric equalizer filters, with some modifications by the author.
The formulas below use f for kc, V for kv, and Q for kq. The filter divides all coefficients by a0.
The formula for the low shelf filter is:
omega = 2*pi*f/sr
K = tan(omega/2)
b0 = 1 + sqrt(2*V)*K + V*K^2
b1 = 2*(V*K^2 - 1)
b2 = 1 - sqrt(2*V)*K + V*K^2
a0 = 1 + K/Q + K^2
a1 = 2*(K^2 - 1)
a2 = 1 - K/Q + K^2
The formula for the high shelf filter is:
omega = 2*pi*f/sr
K = tan((pi-omega)/2)
b0 = 1 + sqrt(2*V)*K + V*K^2
b1 = -2*(V*K^2 - 1)
b2 = 1 - sqrt(2*V)*K + V*K^2
a0 = 1 + K/Q + K^2
a1 = -2*(K^2 - 1)
a2 = 1 - K/Q + K^2
The formula for the peaking filter is:
omega = 2*pi*f/sr
K = tan(omega/2)
b0 = 1 + V*K/Q + K^2
b1 = 2*(K^2 - 1)
b2 = 1 - V*K/Q + K^2
a0 = 1 + K/Q + K^2
a1 = 2*(K^2 - 1)
a2 = 1 - K/Q + K^2
Syntax
Initialization
imode (optional, default: 0) -- operating mode
- 0 = Peaking
- 1 = Low Shelving
- 2 = High Shelving
iskip (optional, default=0) -- a nonzero value keeps the filter's mode and history on reinitialization. First use always initializes the filter. With zero, reinitialization clears the history and applies imode.
Performance
kc -- center frequency in peaking mode, corner frequency in shelving mode.
kv -- linear gain: a value below 1 is a cut, and a value above 1 is a boost. In peaking mode, 1 gives a flat response. In shelving modes, a flat response also requires kq = sqrt(.5); other Q values can shape the response near the corner frequency even when kv = 1.
kq -- Q of the filter (sqrt(.5) is no resonance)
asig -- the incoming signal
Examples
Here is an example of the pareq opcode. It uses the file pareq.csd.
See also
Specialized Filters: Parametric EQ
Credits
Hans Mikelson
December 1998
New in Csound version 3.50