[sdiy] SSM2040 filter question
Antti Huovilainen
ajhuovil at cc.hut.fi
Fri Nov 7 12:22:42 CET 2003
On Wed, 5 Nov 2003, Paul Maddox wrote:
> > I've been doing some simulations of analog filters lately
> > (http://www.hut.fi/~ajhuovil/asynth).
> sounding nice, how are you emulating them?
I separate each filter section. Then I solve the nonlinear differential
equation for each section (easier than it sounds). The resonance is
handled by adding a unit-delay to feedback path.
The differential equation for typical OTA filter section is
Iout = Ic*tanh((Vin - Vc) / (2*Vt))
Ic = Iout = C*dVc/dt
so dVc/dt = Ic/C * tanh((Vin-Vc)/(2*Vt))
which you can solve numerically. Euler method works ok and then you end up
with difference equation that is same as impulse-invariant transform of
ideal RC filter for low signal amplitudes (no distortion) and low
frequencies. You can use that to get better tuning while still retaining
the nonlinearities.
Moog filter was a bit trickier...
(does moogboring.mp3 sound like moog filter at all? I've never played with
a real one so I don't know)
I also use 8x oversampling to avoid aliasing from tanh() nonlinearity and
to make the numerical solution closer to continuous time solution.
btw, Stilson & Smith's moog filter paper has really nothing to do with
Moog filter specifically. Better title for it would be "emulating generic
4pole lowpass filter". When you remove nonlinearities as they have done,
moog & ssm2040 become the same.
Antti
Give a man a fire, and he'll be warm that day,
Set him alight and he'll be warm for the rest of his life
More information about the Synth-diy
mailing list