After developing two domain-specific language prototypes for music composition (older, newer solo venture), I decided to get back into the signal processing side of music by developing audio plugins. JUCE is easily the most popular platform for this because you can create cross-platform plugins for VST, Audio Units, AAX, and RTAS from the same codebase. However this functionality requires using their own build tool, and the documentation for JUCE can be a little sparse or misleading in some places.

To get a better understanding of how these audio plugin formats work and to sharpen my C/C++ skills, I decided to write my own VST plugin without the aid of JUCE. I chose CMake as my build tool for this project because cross-platform support is crucial to the success of audio plugins.

While I continue to work on one of my plugin concepts, I decided I would release the template I created to facilitate the development process. The template is a functional duplicate of the “AGain” gain changer example project that ships with the VST SDK. Instead of providing a Visual Studio or Xcode project it uses CMake to generate the Visual Studio and Xcode project files. The template can also build plugins for Linux (Steinberg does not provide templates for Linux, so this is bonus), and has install scripts for Windows and Unix.

In the future I might create an equivalent template for Audio Units, or update this template to the newer (but less industry-supported) VST3 API. For now, you can down the template from the link below: