Hi Ross, I never actually use the form of the equations I posted in the pdf, I wrote all those horrible "z^-1" type state diagrams specifically because Vadim requested them, but they confuse the crap out of me and I even had difficulty writing them myself, they are really of no practical use for me at all. I actually use the equivalent current form as shown here:
http://qucs.sourceforge.net/tech/node26.html You can see that all previous terms, ie terms that are in "n" or "n-1" ... "n-m" can be summed to form a single constant. In the specific case of trapezoidal integration you have (in this case "n+1" is the current time step, "n" is equivalent to z^-1, "n-1" is z^-2 etc: ic(n+1) = 2*C/h(n+1)*vc(n+1) - 2*C/h(n)*vc(n) - ic(n) ic(n+1) = gc(n+1)*vc(n+1) - iceq where gc(n) = 2C/h(n) and gc(n+1) = 2C/h(n+1) and iceq = gc(n)*vc(n) + ic(n) You can drop all the "n" stuff now and just use: ic = gc*vc - iceq And if you update iceq after the solution then all your "z" terms are taken care of. For the specific case of trapezoidal integration you have: iceq = 2*gc*vc - iceq so you iceq holds your "z^-1" and "z^-2" etc terms for you and becomes a single state. This is all completely standard circuit mathematics that has been around for a very long time and was probably written in fortran codes before I was born. I'll update the document to get rid of all those horrible z terms soon. All the best, Andy On 5 November 2013 18:52, Vadim Zavalishin <vadim.zavalis...@native-instruments.de> wrote: > (the quotation is from Andy's mail) >>> >>> On 2/8/13 2:15 AM, Ross Bencina wrote: >>> i've analyzed Hal's SVF to death, and i was exposted to Andy's >>> design some time ago, but at first glance, it looks like the >>> "Trapazoidal SVF" looks like it doubles the order of the filter. >>> it it was a second-order analog, it becomes a 4th-order digital. >>> but his final equations do not show that. do those "trapazoidal" >>> integrators, become a single-delay element block (if one were to >>> simplify)? even though they ostensibly have two delays? > > > You can use canonical (DF2/TDF2) trapezoidal integration, in which case the > order of the filter doesn't formally grow. This is quite intuitively > representable in the TPT papers and the book I mentioned earlier. If you use > DF1 integrators, the order formally grows by a factor of 2, but I believe > half of the poles will be cancelled by the zeroes. > > BTW, IIRC, as for the optimization from 4 z^-1 to 3 z^-1 in Andy's SVF, I > believe this optimization implicitly assumed the time-invariance of the > filter. So, while keeping the transfer function intact, this optimization > changes the time-varying behavior of the filter (not sure, how much and > whether it's for the worse or for the better). > > Regards, > Vadim > > > -- > Vadim Zavalishin > Reaktor Application Architect > Native Instruments GmbH > +49-30-611035-0 > > www.native-instruments.com > > -- > 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