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.
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).
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:
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
…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 .
Soweit, so gut. Im nächsten Teil schauen wir uns den Quellcode dann mal etwas genauer an…
2 Pingbacks