[Fpga-synth] SVF Question

Magnus Danielson magnus at rubidium.dyndns.org
Fri Jan 2 23:19:20 CET 2009


Scott Gravenhorst skrev:
> Happy New Year all,
> 
> Is there a web resource which explains why a digital SVF is best operated using low cutoff frequencies?  
> 
> I've read a small piece on Chamberlain who used a figure of 1/6 SR.  Other people suggest 1/8 or even
> 1/16 SR as an upper Fc limit, but the explanations I've read are sort of vague saying things like
> "certain features aren't apparent in the digital version as are available in the analog version when
> the digital version is used at higher cutoffs".

I'm not quite sure that this is the answer you are looking for, but 
never the less, here is an attempt at it.

If you just "map" your analog filter response into the digital world, 
the linear scale of jomega is curled up on itself. This causes a form of 
"frequency distorsion". For instance, when using the Bilinear transform 
[1] [2] (do google that one) you compensate by using pre-distorsion. 
Bilinear transformation is achieve by replacing the LaPlaceian s 
variables with

      2 z - 1
s <- - -----
      T z + 1

Now, this causes the properties of a SVF filter to become much different 
then intended for higher frequencies, but for lower frequencies, at a 
fractional of the rate, the curvature of the unit circle becomes 
significantly less and a significantly simplified variant can be used in 
which

      1
s <- - (z - 1)
      T

This is known as Forward Difference mapping [2].

There is a whole set of more or less simple transforms trying to convey 
different aspects. However, they all fade to grey when faced with direct 
IIR or FIR synthesis made possible with computers. So while this may not 
give you a direct explanation, it can give you a feel of the complexity 
issue involved. In general, having sufficient oversampling eases many 
aspects of design, such that less of aliasing and filter warping occurs 
and more straight-forward method can be used. Thus, what you pay in form 
of oversampling (compared to what you would need in a Nyquist limited 
world) you gain in simplicity of design and calculations otherwise.

Running sample-rates such as 768 kHz (16x48) thus give you head-room in 
the frequency domain. Comes at a cost (as all additional head-room) but 
gives you some benefits in the process.

[1] http://en.wikipedia.org/wiki/Bilinear_transform

[2] Rabiner & Gold "Theory and Application of Digital Signal Processing"

Cheers,
Magnus


More information about the Fpga-synth mailing list