FW: digital contents

Haible_Juergen#Tel2743 HJ2743 at denbgm3xm.scnn1.msmgate.m30x.nbg.scn.de
Fri Sep 20 23:50:00 CEST 1996


I forward this to the list (I asked Paolo), because I think it will be
of more general interest. (large signal response!)
My answer to this will follow; then we can
go on with this in DIY, if we like! (JH)
 ----------
From: Paolo Predonzani
To: HJ2743
Subject: Re: digital contents
Date: Thursday, 19. September 1996 15:06

> Hmm, this is not AH, and you *can* build digital filters yourself,
> nowadays, so I would have no problems with this.
> Though I cannot contribute much to this DSP stuff myself,
> I find it very interesting to see you talk about it. I'd appreciate
> it if you go on with this nonlinearities/aliasing stuff.
>
I've been working on a numerical implementation of the Moog filter for
a month. The non-linearities I considered are the differential input
and the 4  current buffers.
The non-linearities are a major problem because they are present in
every term of the (4th order) differential equation the filter obeys to.
This makes the poles move in the s-plane for constant cutoff freq and Q.
The small signal analysis shows 4 coincident poles in -p (open loop).
The large signal analysis shows that the poles move between -p and the
origin of the s-plane. The static open loop gain also varies.
Standard DSP filters rely on the fact that the coefficients of the
FIR/IIR filter are constant but this is not true for the Moog filter.

The algorithm I use could have been written in the 70's and can be found
in many books on discrete-time control theory of that period.
Unfortunately it is very slow and has a poor conditioning (= noise).
The typical computation time is 40sec for 10sec of music at 22050Hz on
a 80486DX266.

For the aliasing problem I use superresolution. Adaptive oversampling
is used (much like in ray tracing). The oversampling values are x1, x2, x3.
The rules of thumb to choose the oversampling level are:
 - oversampling is proportional to the cutoff frequency.
 - oversampling is set to x3 when there is a step-transition of any
  oscillator (saw, pulse).

Adaptive oversampling is not adequate for a real-time implementation.
Please note that SPICE (circuit simulation program) uses adaptive
oversamplig too.

My concern was to ensure the convergence of the poor conditioned algorithm
but the solution (oversampling) turned out to be an effective anti-aliasing
tecnique.

 --
+-------------------+----------------------------------+
| Paolo Predonzani  |  email: predo at dist.dist.unige.it |
+-------------------+----------------------------------+




More information about the Synth-diy mailing list