Part 1. Technical Overview and toolset
As you, in this series of blog posts, we (well, mostly me) gonna built some kind of strange drum machine in a form of VST (virtual instrument) plugin.
Earlier, I mentioned, that you can create awesome /tuned percussion/ and /cymbal/ sound using SuperCollider, a powerful language and client-server runtime for digital sound processing. But what I did not mention, is that it can be compiled into an AU plugin! Yes, that’s gonna be the “main reactor” of our drum machine. But how?
Well, since both SuperCollider and SuperColliderAU are open-source, the obvious solution to that, would be porting SuperCollderAU to a modern DSP framework with VST support, but I think this extremely valuable and notable project, could be saved for later (and meanwhile let my C++ skills grow a bit more for that mater).
Right now, we can stick to dirty “proof of concept”, using a very n00b-friendly dsp/virtual instrument framework called JUCE, which also has VST host capabilities. Taking advantage of that, we will be, running, what would be, basically, a containerised Supercollider server inside JUCE VST plugin, which will load a precompiled SynthDef file, and then produce and alter sounds, responding to OSC commands sent to its UDP port. All the other stuff like basic synth/noise blip-blop generators, filters, and playing samples will be handled using JUCE’s built-in components, all mixed and routed to specific channels.
According to these, the required tools for the project would be:
- C/C++ build environment (
xcode-select --install
on Mac,sudo apt-get install build-essential
on Linux, Microsoft Visual Studio outfit + MinGW/CYGWIN for alternative operating systems) - JUCE framework
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
on OSX- IDE of choice (Xcode, CLion, Emacs)
Current limitations:
Since provided DSP plugin version of SuperCollider is in AU format, the project is Mac only for now. Later I will do a full-feature SupercolliderAU port to JUCE which will enable cross-platform shipping of all this ugliness, so stay tuned.