Sampling, Recording, Programmierung & Software

Kategorie: VST-Entwicklung

VST-Plugin Programmierung #01 – JUCE installieren und „Hello Word“ – Plugin generieren…

Ja, auch wenn ich noch total am Anfang bin mit den C++ Tutorials, will ich schon mal so langsam in das JUCE Framework schauen und so langsam die ersten Gehversuche machen. Ich habe vor zwei Jahren schon mal damit angefangen und es wieder verworfen. Es wird Zeit für einen zweiten Versuch 😉

Quelle: juce.com

Was ist JUCE?

JUCE ist ein C++-Application Framework, dass teilweise Open Source ist. Dieses Framework unterstützt den Programmierer beim Erstellen von Multiplattform-GUI-Anwendungen. JUCE ist in erster Linie für die Entwicklung im Bereich Audio-Anwendungen (Standalone oder Plugins) bekannt.

Audio Programmierung #02 – C++ Grundlagen: Variablen und grundlegende Datentypen

Variablen helfen dem Programmierer Daten temporär für eine bestimmte Zeit zu speichern. Konstanten sind Variablen, die nach der Initialisierung (nach der Zuweisung mit einem Wert) nicht mehr geändert werden dürfen. Sie bleiben halt konstant.

Alle Computer haben einen Microprozessor und einen Speicher, der für die temporäre Speicherung von Daten zuständig ist (Random Access Memory: RAM). Zusätzlich gibt es noch den Speicher, der Daten ständig speichert, oder zumindest könnten sie permanent gespeichert bleiben (Festplatte). Der Microprozessor führt das Programm aus und arbeitet mit dem RAM zusammen, um auf das Programm und eventuell gespeicherte Daten für das Programm zuzugreifen.

Der RAM Speicher ist eine große Lagerhalle mit einzelnen Räumen, auf die man über eine bestimmte Adresse zugreifen kann … zumindest kann man sich das so vorstellen. Angenommen man schreibt ein Programm, dass zwei Zahlen addiert, die der User vorher über die Tastatur eingegeben hat. In C++ (und auch in anderen Programmiersprachen) definiert man hierfür Variablen, die diese Werte dann speichern. Somit muss man sich nicht komplizierte Speicheradressen merken. Man kann diese einfach mithilfe der Namen der Variablen erreichen und darauf zugreifen.

Eine Variable zu definieren ist denkbar einfach und sieht in etwa so aus:

VariableType VariableName

oder

VariableType VariableName = InitialValue

Audio Programmierung #01 – C++ Grundlagen: Hello World…

Ok, im letzten Teil habe ich kurz ein paar Bücher, Editoren und Compiler bzw Entwicklungsumgebungen für die C++ Programmierung aufgezählt. Am Ende habe ich noch das erste kleine Programm in den Editor getippt und übersetzt. Genau an der Stelle will ich heute wieder ansetzen und anhand des Hello World Programms erläutern, was der Compiler / Linker beim Übersetzen so macht und was die einzelnen Teile des simplen Programms zu bedeuten haben.

Ja, das klingt noch nicht spannend … und soviel kann ich schon mal sagen. Bis zur Programmierung eigener VST-Plugins wird es noch etwas dauern. Die C++ Grundlagen werden so einige Artikel umfassen und für den ein oder anderen die ganze Zeit nicht allzu spannend sein. Für mich sind sie das schon und darum kann ich es kaum abwarten anzufangen…

Hello, C++-world!

// helloworld.cpp
// This program outputs the message "Hello, C++-world!" 
// on the screen
#include <iostream>

using namespace std;
// C++ programs starts by executing the function main
int main() {    
    // output "Hello, C++-world!"
    cout << "Hello, C++-world!" << endl;    
    return 0;
}

Audio Programmierung: Der Einstieg mit C++

Ziemlich genau vor zwei Jahren habe ich einige Artikel zur VST-Entwicklung mit C++ und JUCE geschrieben und kurze Zeit später aus Zeitmangel nicht fortgesetzt. Ein Jahr später schrieb ich wieder einen ähnlichen Artikel, diesmal ging es um die Entwicklung von eigenen Modulen für das modulare Synthesizer-System VCV Rack. Auch das habe ich nicht wirklich weiter verfolgt.

Vor ein paar Wochen habe ich angefangen Python zu lernen und das hat meine Programmierlust wieder so richtig geweckt. Als ich dann vor ein paar Tagen eine Email von einem Leser des Blogs bekam, der ein paar Fragen zum Thema VST-Programmierung mit C++ und JUCE hatte, war das Feuer wieder entfacht.

Tracktion Engine – Eine Open Source Engine zum Entwickeln von Musik- und Audio-Tools

Erst vor Kurzem hat Tracktion die komplette DAW T7 für den freien, uneingeschränkten Download freigegeben und jetzt gleich die nächste Überraschung: Die Tracktion Engine wird Open Source und kann frei verwendet werden, wenn man eigene Musik-Tools bauen will.

Das Lizenzmodell funktioniert ähnlich wie das des JUCE-Frameworks. Wenn man mit seinen Tools nicht mehr als 50.000 Dollar im Jahr verdienen will, kann man den kompletten Code umsonst einsetzen.  Falls man doch etwas größer in das Software Geschäft einsteigen will, gibt es verschiedene Modelle, bei denen man monatlich bezahlen muss.

Die komplette Engine ist als JUCE-Modul verfügbar. Somit kann man Teile der Engine auch in seinen bisherigen JUCE-Projekten verwenden.

Die Tracktion Engine unterstützt einen Haufen Plattformen (Mac, Linux, Win, Android, iOS, Raspberry Pi). Hier die Links zur offiziellen Tracktion Developer Website und zur GitHub Page:

Tracktion Engine

Tracktion Engine (GitHub)

Eine astreine Leseliste für alle ambitionierten Sound-Tüftler und Audio-Programmierer

Liest heute noch jemand? Ja, ich denke und hoffe schon. Auch wenn es wirklich gute Videotutorials – entweder auf YouTube oder auch auf Seiten von Bezahlanbietern – gibt, kann das alles kein gutes Lehrbuch ersetzen. An dieser Stelle wollte ich mal kurz ein paar Büchertipps geben und eine Handvoll Titel aufzählen, die mir wirklich weiter geholfen haben bzw. auch aktuell noch helfen.

Ein gutes Buch hilft beim konzentrierten Lernen

VST-Entwicklung mit JUCE – Mehr zum Projucer

Das letzte mal habe ich anhand eines ersten „leeren“ VST-Plugin Projektes den Projucer kurz vorgestellt. Wie man ein neues Projekt anlegt, die JUCE Module einbindet und für seine Plattform und IDE der Wahl diese Projekte exportiert. Heute will ich etwas näher auf den Projucer eingehen. Dieser Beitrag ist an das englische Tutorial zu diesem Thema auf den JUCE Seiten angelehnt.

Wenn man sich die Dateien eines Projucer Projektes etwas genauer ansieht, dann findet man folgende Struktur:

Die Ordnerstruktur eines Projucer Projektes.

VST-Entwicklung mit JUCE – Wer ist der Projucer?

Mittlerweile ist JUCE in Version 5.2 und der Download zu dem Framework befindet sich hier. Auf den Download-Seiten muss man sich für eine Lizenz entscheiden und für den Einsteiger wird es sicherlich die Personal- oder die Education-License sein, denn diese sind kostenlos. Bedingung: Die entwickelte Software muss als Open Source veröffentlicht werden (wenn sie denn veröffentlicht wird) und man darf nicht mehr als 50k US-Dollar im Jahr damit verdienen.

Nachdem man das Paket heruntergeladen hat, sollte man es in einem Ordner im Home-Verzeichnis entpacken. Bei mir gibt es dafür den Ordner vst-development, darin befindet sich dann der Unterordner JUCE. Die Ordnerstruktur bleibt selbstverständlich jedem selbst überlassen. In dem JUCE Ordner befindet sich die ausführbare Datei Projucer. Beim Starten dieser Datei öffnet sich der Projucer und bietet verschiedene Optionen für ein neues oder altes Projekt.

Der Projucer bietet für jede Anwendung ein Projekt-Template.

VST-Plugins selbst programmiert…

UPDATE: Ich habe die Serie hier neu gestartet, da ich 2018 irgendwann damit aufgehört habe. Die neuen Tutorials habe ich im April 2020 gestartet…

Wenn man sich jahrelang mit Musiksoftware beschäftigt, nebenbei ein Informatikstudium am Laufen hat und dann auch noch etwas mit C++ in VCVRack herumgespielt hat, kommt man irgendwann schon auf den Gedanken, selber ein Effekt- oder Instrument zu programmieren.

Die Sprache der Wahl ist definitiv C++. Eigentlich habe ich mich die letzten zwei Jahre recht intensiv mit Java beschäftigt. Allerdings ist Performance einer der wichtigsten Faktoren, wenn wir von Realtime-Audio-Anwendungen sprechen. C bzw. C++ ist in diesem Bereich unschlagbar. Wenn man schon etwas Erfahrung in objektorientierter Programmierung mitbringt, fällt der Einstieg in C++ auch etwas leichter.

Für Realtime Audio-Anwendungen ist C++ die Sprache der Wahl

Seite 2 von 2

Präsentiert von WordPress & Theme erstellt von Anders Norén