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.