On 29 June 2014 16:05, socialmedia <soc...@monotheo.biz> wrote:
> My general comment on this, and several discussions on KvR and similar
> discussion elsewhere, is this. First of all they accept the term "State
> variable filter". And then apply advanced mathematics to solve it. And then
> realize a highly inefficient filter, usually with oversampling.
>
> State variable filter, was a name for a particular way of doing a 12dB
> filter in the analog domain, AFAIK.

No. An SVF is a very particular low noise analog structure that you
can do any generic biquad responses from, and with a trapezoidal SVF
you can generate the same responses as you can with a DF1 biquad, so
this is useful for exact parametric eq shapes, as well as scientific
grade notch filtering and a bunch of other applications where a very
accurate linear filter is desirable.


> That can be done with extremely simple math.
>
> in = in - (buf2 * res); Subtract output for negative feedback (resonance)
> buf1 = buf1 + ((in - buf1) * cut); One pole (normalized positive feedback)
> buf2 = buf2 + ((buf1 - buf2) * cut); Second pole (normalized positive
> feedback)

Here is forward euler type 4 pole cascade with negative feedback (I'm
writing out the "z" terms just to make it clearer what is going on):

v1z = v1
v2z = v2
v3z = v4
v4z = v4
v1 += cut * (in - v1z - res*v4z)
v2 += cut * (v1 - v2z)
v3 += cut * (v2 - v3z)
v4 += cut * (v3 - v4z)

Now you can cut this down by one section, but you get more passband
cut with increased reonsnace:

v1z = v1
v2z = v2
v3z = v4
v1 += cut * (in - v1z - res*v3z)
v2 += cut * (v1 - v2z)
v3 += cut * (v2 - v3z)

You can drop another section, but the results are terrible as you get
loads of passband cut with resonance:

v1z = v1
v2z = v2
v1 += cut * (in - v1z - res*v2z)
v2 += cut * (v1 - v2z)

This is what you have done, and I don't recommend it, there are much
better low cpu filter structures than this (if you are interested in
that sort of thing). They actually used a 3 pole version in the
Xpander, but mostly people use 4 pole since the passband cut is too
great otherwise.

It is possible to construct a very low cpu Sallen Key as well as SVF
which has "perfect" trapezoidal shapes without oversampling and you
can apply trivial non-linearities to. The paper I have presented has
very little to do with any of this, I'm trying to generating the
lowest possible noise filter structure that has exact amplitude and
phase as a continuos biquad response at DC, cutoff, and infinity
(infinity being mapped to nyquist for the digital filter).

Andy
--
dupswapdrop -- the music-dsp mailing list and website:
subscription info, FAQ, source code archive, list archive, book reviews, dsp 
links
http://music.columbia.edu/cmc/music-dsp
http://music.columbia.edu/mailman/listinfo/music-dsp

Reply via email to