| Hi,
Here is an implementation of a parametric equalizer based on the following
paper:
The Equivalence of Various Methods of Computing Biquad Coefficients for
Audio Parametric Equalizers by Robert Bristow-Johnson
available from the web site:
http://www.harmony-central.com/Effects/Articles/EQ_Coefficients/
For some reason I seem to have to multiply the center frequency by about 6.5
to get it correct. Anyone see what I am doing wrong?
Bye,
Hans Mikelson
; ORCHESTRA
;----------------------------------------------------------------
; Biquadratic Equalizer Filter
; Coded by Hans Mikelson November 1998
;----------------------------------------------------------------
sr=44100
kr=4410
ksmps=10
nchnls=2
;----------------------------------------------------------------
; 1 Band Parametric Equalizer
;----------------------------------------------------------------
instr 1
ifc = p4 ; Center Frequency
ibw = p5 ; Band Width in Octaves
igain = p6 ; Gain/Cut in dB
iomega0 = 2*taninv(ifc*6.5/2/sr) ; I seem to have to multiply by 6.5 to
get Fc correct?
igamma = sinh(log(2)/2*ibw*iomega0/sin(iomega0))*sin(iomega0) ; Gamma
as defined in the paper
ik = ampdb(igain) ; Convert dB to Amplitude
igrtk = igamma*sqrt(ik) ; Calculate in advance
igortk = igamma/sqrt(ik) ; to save time
kb0 = 1+igrtk ; Compute the coefficients
kb1 = -2*cos(iomega0)
kb2 = 1-igrtk
ka0 = 1+igortk
ka1 = kb1
ka2 = 1-igortk
asig rand 10000 ; Random number source for testing
aout biquad asig, kb0, kb1, kb2, ka0, ka1, ka2 ; Biquad filter
outs aout, aout ; Output the results
endin
; SCORE
; Sta Dur Fcenter BandWidth(Octaves) Boost/Cut(dB)
i1 0 1 1000 .5 12
i1 + . 5000 .5 12
i1 . . 5000 .2 12
i1 . . 1000 .5 -12
i1 . . 5000 .5 -12
i1 . . 5000 1 -12
|