One thing I like to do is read the source code of other people’s plug-ins to figure out how they work.
Usually these are older plug-ins that are no longer commercially relevant and have been open sourced — but that doesn’t mean we can’t learn anything from them.
You can pick up a lot by reading someone else’s code. Different programmers have different styles and will solve problems in ways you may not have thought of yourself. Plus, it can be a fun puzzle to figure out what the code does, as comments are often missing.
If you read enough “other people’s code”, you’ll start to recognize patterns. For example, when I first came across the following code, it thoroughly confused me — WTF is going on here?
fx += (x - fx) * f;
As it turns out, this is a very common way to implement a one-pole filter that appears in tons of audio code. Now that I know what this code is for, it’s easy to recognize when and why a plug-in might use it, even if the variable names are not immediately obvious.
Links to my archeology projects:
MDA plug-ins in JUCE — I started my audio development journey by studying the popular MDA suite of plug-ins from the late 1990s / early 2000s. The original code uses the now-unavailable VST2 framework, so I ported it to JUCE and added lots of comments. For a practical introductory course to audio programming, study the MDA plug-ins!
Airwindows plug-ins in JUCE — These aren’t necessarily old, but the code is pretty dense and not always easy to understand. I’ve been porting some of these plug-ins to JUCE, mainly to study how they work.
I’ve got plenty of other old source code that’s worth spelunking in and I’ll be adding more projects over time. There is such a wealth of DSP knowledge hidden in these old plug-ins, but unfortunately many of them are starting to disappear from the web because their authors move on to new things. It would be nice to conserve some of that knowledge for the next generation of audio programmers.
In addition to maintaining these open source repos, I also plan to write more in-depth explanations of selected plug-ins on this blog.
Index of the plug-in archeology blog posts:
- MDA Overdrive
- More to come soon!
P.S. I’m always looking for more old plug-in code, so if you happen to have some laying around or know of a cool plug-in that appears to be abandoned, let me know and I’ll try to track down the original author and ask if they are willing to open source it. This will allow the community to bring these plug-ins back to life so that we may still enjoy them, and also lets us learn a thing or two by studying how they work.