Book: The Art of VA Filter Design update (1.1.0)

Hello DSP heads,

The book The Art of VA Filter Design has just been updated to revision 1.1.0 (previously 1.0.3). 

As stated by Vadim, the highlights are:

  • Transposed Sallen-Key (TSK) filters
  • Frequency shifters
  • Some other stuff 

If you haven't already read this book, you should really do it. I found it extremely useful when I was learning DSP and how filters work, and I still learn from it when I go back and read it from time to time. The filters in it are great too. I love the TPT filter structures. I actually made the (linear) SVF from the book as my first C++ filter project (I come from Reaktor). It's actually a quite simple design. I'll post the link to it just in case anyone is interested. Just note it's a test plugin and I'm very unexperienced in C++. The actual filter is in VAStateVariableFilter(.cpp/.h).

If anyone else implements any of the other filter's in C++ and JUCE, please do share. I'm very interested in how other people implement these designs and algorithms. I plan on making the TPT Ladder Filter when I'm not too busy, so I'll share that too. Maybe someone can get use out of them.

I'm really looking forward to checking out the new things like the TSK filters and the new chapter on frequency shifters. Hopefully y'all can enjoy it too.

Edit: Be sure to check out the KVR thread that Vadim (the author) posted a while back for discussion on this book. He also mentions bugfixes on there first, it seems. There's actually a mistake he already caught, so look out for that.

Thanks for posting this! I look forward to reading your code, as I haven't got my head around the new wave of VA filters yet (I started with the Tim Stilson Moog filter ages ago).


For those that are interested, the latest PDF can be downloaded from


I was just looking at the chapter on frequency shifters. MAN, that is some complicated math. Much more fancy than my technique: take a list of normalized pole frequencies from an old Electronotes article, transpose to the desired audio bandwidth, and use the bilinear z-transform to calculate the allpass coefficients.


Sean Costello

Thanks for posting that link. I completely forgot to. Lol. Just remember I'm pretty much a noob when it comes to C++. I'm sure the filter is alright though. It works pretty much exactly like the one I made in Reaktor. 

I should also mention that I have a parameter smoother in there for the cutoff frequency (which was just a test to see if I could get it to work). Its the one from JUCE's Reverb. I did turn it off (by changing the time to 0.0 ms) so its not actually smoothing, but its still calling calcFilter() every sample (which calculates coefficients). I should probably make a member function for turning the smoother on/off. I also need to fix something with the Shelf Gain parameter, so watch out if you use the Band Shelving filter output. 

Edit: I commented out any code that uses the parameter smoother and refactored a little code in the process functions. You can easily uncomment the parameter smoother code if you do want to test it out.

Feel free to use the VAStateVariableFilter as is, or modified. I should also mention that it doesn't have the nonlinear element mentioned in the book. There are still a lot of improvements I need to make, but just haven't had the time lately. 

Also, check out this simplified explanation of the same filter from Will Pirkle, along with other filters from the book.

I agree, those frequency shifters do look quite complicated. I'm hoping I can figure out how to make them. Im pretty excited to give them a try though. If I do eventually make them and get them working, I'll definitely share them with y'all. I'd love to see any of y'all's implementations of anything from this book too. :)