I’m interested in making some funky nonlinear/adaptive filter/distortion modules, so I am trying to learn more about traditional filters. Besides reading books and articles and watching videos (e.g. Leonardo Laguna Ruiz), I am also trying to understand some of the source code for existing filters in VCV. I started with the Fundamental VCF module, since I thought that might be one of the simpler ones. I have a few questions, many thanks in advance for any answers:
The low-pass filter in the VCF module is modeled on a Moog 4-stage filter, using what seems to be a slightly unusual technique of simulating the circuits through differential equations (as opposed to zero/pole placement or Z-transform analysis). The closest description I could find to this was a Raph Levien paper (https://levien.com/ladder.pdf), although he did some strange exponentiation of a linearized version of the equations instead of the 4th-order Runge-Kutta method that is used by VCF (which I haven’t been able to find a reference for in this context, although Levien mentions it as a possible method). Was this a novel approach? If there is a published analysis of this approach I’d like to read it.
The high-pass output of the Fundamental VCF does not work correctly, as has been noted on this forum already, and it is also noted in the source code. I’ve spent quite a bit of time trying to fix it unsuccessfully. As far as I can tell, it is trying to use a spectral inversion techique on the output of the RK4 simulation to convert the low-pass information to a high-pass filter. I haven’t found any reference that discusses that sort of technique, so if anyone knows of one I’d appreciate it. There are a number of analyses of the Moog filter that relate it to more traditional IIR filters, and using that approach a spectral inversion would be relatively straightforward, but I don’t see a direct connection to the information generated by the ODE approach. Perhaps it would be better to just replace this with a biquad highpass resonant filter?
As the Fundamental VCF turned out to be a longer educational rabbit-hole than I anticipated, does anyone have any suggestions for an open-source filter in VCV that would be particularly simple to look at? I am also curious about any references that filter authors have found exceptionally clear and useful.