AN-4: Virtual Analog (VA) Filter Implementation
by Will Pirkle (v2.1 updated 12.7.16)
This App Note shows implementations, experiments and comparisons of Zavalishin’s Virtual Analog (VA) Filters with the traditional direct-form implementations as well as the Massberg Analog Modeling Filters. The VA filters are based around a structure that preserves the topologies of the original analog filter circuits, including delay-less loops. The first part of the document provides a bit more background on the trapezoidal integrator (aka bilinear integrator) and then VA Filter implementations and comparisons are made with the BZT-biquad realizations and the Massberg variations. Block diagrams for the filters are included along with sample code. The accompanying RackAFX project also implements 4X Oversampling for more comparisons and has all code for all filters. These include all the 1st and 2nd order filters in the VA book as well as the Massberg lowpass filters and the Stilson-Smith Ladder filter. Below is the block diagram of the VA Moog Ladder Filter from the App Note.
There was an error in my original implementation of the TPT Ladder Filter that has now been corrected (July 2013). The TPT Ladder works correctly without oversampling right up to Nyquist and will self oscillate at the highest resonance setting. The derivation for the block diagram is fully worked out and the code has been corrected.