VCV Rack habe ich hier des öfteren schon erwähnt, gelobt und gefeiert. Auch habe ich damals etwas dazu geschrieben, wie man das Rack selbst kompiliert und das Template-Modul verwendet, um eventuell eigene Module zu programmieren.

Da ich im letzten Jahr endlich mein Hochschulkurs in C++ erfolgreich abgeschlossen habe, wird es jetzt mal höchste Zeit das Erlernte anzuwenden und zu vertiefen. Aus diesem Grund starte ich in diesem Jahr mit der Audio Programmierung – Serie. Ziel soll hier sein, eigene VST Plugins mithilfe des JUCE-Frameworks zu entwickeln.

Zunächst einmal will ich aber VCV Rack nutzen. Denn ich denke das Rack ist ein hervorragendes Framework für den Einstieg in die Audio Programmierung. Leider gibt es nicht allzu viele Tutorials, die einem hierzu an die Hand nehmen. Und auch wenn Andrew Belt, der Hauptentwickler von VCV Rack einiges getan hat, damit C++ Entwickler möglichst unkompliziert eigene Module entwickeln können, fehlt es doch an echten Anleitungen. Genau hier setzt diese Blogserie an.

The Rack…

Falls jemand VCV Rack noch nicht kennt … Es handelt sich um einen modularen Synthesizer in Softwareform. Die Software ist ein erster Linie Open Source und kostenlos. Es gibt allerdings einige Module, für die man ein paar Euros hinlegen muß, so unterstützt man die Entwickler halt. Aber der Großteil ist tatsächlich völlig kostenlos.

Es gibt mittlerweile unzählige Module und es werden wöchentlich mehr. Alles in allem: Eine großartige Software, ein großartiges Instrument und ein hervorragender Einstieg in die Welt der modularen Synthese, sowie in die Entwicklung von C++ Audio Modulen. Folgendes Video bringt es sehr gut auf den Punkt:

Um nun eigene Module in VCV Rack zu entwickeln, benötigt zuerst einiges an Tools. Ich werde hier die Vorgehensweise auf einem Mac beschreiben. Falls man auf einem Windows PC zuhause ist, kann man sich dieses Tutorial anschauen. Zunächst einmal benötigt man die Standard Entwicklungsumgebung für den Mac und das ist XCode. Die IDE kann frei von der Apple-Website heruntergeladen werden, man muss sich allerdings als Developer anmelden (was aber völlig unkompliziert ist).

XCode, die IDE unter MacOS

Als nächstes geht es in das Terminal. Im Home Folder sollte man sich nun einen Ordner für die Entwicklung von Rack Modulen anlegen. Ich hab unter Dokumente den Ordner RackDev dafür angelegt.

cd Documents
mkdir RackDev
cd RackDev

Nachdem wir eben XCode installiert haben, benötigen wir nun noch die XCode Command Line Tools, damit wir den C++-Compiler (clang) auch im Terminal nutzen können. Die Command Line Tools installiert man nun mit folgendem Befehl:

xcode-select --install

Nun erscheint normalerweise ein Popup Fenster, dass einen darauf hinweist, dass jetzt die Command Line Tools installiert werden. Falls man eine Fehlermeldung bekommt, dann sind diese bereits installiert. Wenn man nach der Installation…

clang -v

…in das Terminal eingibt, sollte der Compiler Folgendes ausgeben:

Apple LLVM version 9.0.0 (clang-900.0.38)
Target: x86_64-apple-darwin16.7.0
Thread model: posix

Jetzt ist der C++-Compiler korrekt installiert. Als nächstes benötigen wir die Tools CMake und WGet. Diese kann man am einfachsten mithilfe von Homebrew installieren. Homebrew ist Mac’s Antwort auf die zahlreichen, praktischen Paketmanager für Linux. Als Macbesitzer sollte man Homebrew auf jeden Fall installiert haben. Falls dem also noch nicht so ist, sollte man das an dieser Stelle schnell nachholen.

Jetzt kann ich WGet, CMake und falls noch nicht vorhanden auch Git mit Brew installieren:

brew install wget cmake git

So, um VCV Rack nun aus dem Source Code zu kompilieren, benötigen wir zunächst einmal besagten Code. Da wir uns noch immer im RackDev Verzeichnis befinden geben wir nun einfach folgende Befehle ein, um das Repository von Rack zu klonen und gehen dann in das neue Verzeichnis:

git clone https://github.com/VCVRack/Rack.git
cd Rack

Wir müssen jetzt noch sicherstellen, dass wir den aktuellsten und stabilsten Branch nutzen. Version 1.0 von VCV Rack ist gerade in der Entwicklung. Die aktuelle stabile Version ist v0.6. Aus diesem Grund nutzen wir diese Version mit folgenden Befehl:

git checkout v0.6.0

Jetzt müssen wir die Untermodule klonen, d.h. den Source Code der Dependencies von Rack in unser Dev-Verzeichnis schaufeln

git submodule update --init --recursive

Mit dem Befehlen

make dep
make

werden die Dependencies und anschließend Rack aus den Source Codes erzeugt. Das kann schonmal ‘ne Viertelstunde dauern… Nun können wir mit

make run

unser selbstgebautes Rack starten. Als nächstes sollten wir uns zumindest die Fundamental Plugins herunterladen. Es wird empfohlen diese in den Unterordner plugins zu legen.

cd plugins
git clone https://github.com/VCVRack/Fundamental.git

Jetzt können hierzu wieder die Untermodule geklont werden:

cd Fundamental
git submodule update --init --recursive

und danach kann alles erzeugt werden, vorher will ich aber noch den richtigen Branch wählen:

git checkout v0.6.0
make dep
make

Wenn wir nun wieder in den Rack-Ordner zurückkehren und Rack starten…

cd ../..
make run

…habe ich auch Zugriff auf die Fundamental Module:

Fundamental Module sind auch installiert…

Wo fange ich jetzt an, wenn ich mein eigenes Plugin entwickeln will? Glücklicherweise gibt es hierfür ein Template. Dazu gehen wir nun nochmal in das /plugins Verzeichnis und klonen das Repository des Templates und gehen dann in das neue Verzeichnis:

cd plugins
git clone https://github.com/VCVRack/Template.git
cd Template

Jetzt erzeugen wir das Template Modul:

make

Wenn ich nun wieder unser selbstgebautes VCV Rack starte,

cd ../..
make run
MyModule ist nun verfügbar…

…dann habe ich das neue Template Modul mit dem Namen MyModule verfügbar. Dabei handelt es sich um einen einfachen Sine-Wave Oszillator. Wenn ich mir den Code anschauen möchte, dann starte ich einfach den Editor meiner Wahl und öffne den Template Ordner darin…

cd plugins/Template
code .
Endlich Quellcode zum Bearbeiten.

Soweit, so gut. Im nächsten Teil schauen wir uns den Quellcode dann mal etwas genauer an…