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.
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)
And then one can do clipping before the filter buffers, to get a good
approximation of analog resonance behaviour, with the second clipper a
bit lower. (Or it will do nothing).
Considering this is very fast, if one does similar simple math
throughout the synth, one can simply use simple oscs aswell, and simply
use oversampling, and get no problems with dcleaks. An additional
analog feature, can be a low emphasis, after the osc section, to
saturate the resonance, a bit more with the bass. And also have a
clipper before. This happened in many analogs since the components were
not linear. Which is better to emulate this way, as one gets perfect
math, and perfect keytracking. And one can additionally add dcoffset at
input, and highpass at output aswell. (And then take the negative
feedback after the hp.)
And it sounds great, and I use such DSP myself, as a musician, and
actually prefer it, over more complex overly theorized stuff, that
simply sounds worse.
A little video from something I am working on, from time to time, using
oversampled, as simple as possible, math, for efficiency.
https://www.youtube.com/watch?v=2_wbhF2YDLs
As one can hear, it really does everything from the dull digital to
the charateristic analog sounds, so indeed, the complexity in
emulation is not needed. And makes a very graceful solution from a
mathematical point of view.
Best Regards,
Ove Karlsen
producer, reseacher, engineer.
Monotheo
www.monotheo.biz
On 6/29/2014 08:44, Andrew Simper wrote:
In a recent KVR thread about sin oscillators I posted a method based
on a tan coefficient trapezoidal integrated SVF. Teemu Voipio
(mystran) pointed out a version that was calculated directly using
complex numbers and only used sin for the coefficients and a state +=
coeff * val type update, so near zero the coefficients are all near
zero, which gave this form better numerical properties.
Also guy called Adriano Mitre did some research into various fixed
point biquads with fixed point computation and has found the old
form I posted ages ago to be very good. I'll leave it to him to
publish exact details, but I wanted to give him the very best I could
offer:
So here it is using sin only for the coefficients:
http://www.cytomic.com/files/dsp/SvfLinearTrapezoidalSin.pdf
Which is linked from this page:
http://www.cytomic.com/technical-papers
These are all just numerical manipulations of the same basic nodal
equations / state space equations to try and squeeze a little more
precision out of things, so thanks to Teemu for the idea of using sin
only for the coefficient calculation.
Also at the bottom I have shown the (horrible) relation between
regular DF1 coefficients and the svf form. I recommend not using this
and instead derive the correct mix terms from analog prototypes, but
I did this to help out Adriano.
All the best,
Andrew Simper
-- cytomic -- sound music software --
--
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
--
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