A classic second-order resonator with separate controls for
resonance frequency and resonance (quality factor) is
the state variable filter
[16,2,3].
However, the measurements described below reveal that
resonance-frequency,
, and gain all vary significantly with pedal
angle. For that reason, and because our Faust implementation uses
floating point (thus eliminating the need to consider special filter
structures for improved fixed-point behavior), we choose the simple
biquad section [12]15to implement the wah resonator.
In Faust, the function TF2(b0,b1,b2,a1,a2) (defined in music.lib) implements a biquad filter section:
TF2(b0,b1,b2,a1,a2) = sub ~ conv2(a1,a2) : conv3(b0,b1,b2) with { conv3(k0,k1,k2,x) = k0*x + k1*x' + k2*x''; conv2(k0,k1,x) = k0*x + k1*x'; sub(x,y) = y-x; };
It remains to express the five biquad coefficients as a function of a single wah variable. This will be done by fitting a biquad to three measured frequency responses and coming up with an interpolation formula for the varying coefficients.