Kategorie: JUCE Seite 1 von 2

Programmiere einen einfachen 3-Band-Compressor mit diesem ausführlichen C++/JUCE Videotutorial

MatKat Music bietet einen ca. 8-stündigen Videokurs an, der zur Zeit absolut nichts kostet und den ambitionierten Programmierneuling an die Hand nimmt und ihm hilft, ein Compressor Plugin zu programmieren.

Das Tutorial beinhaltet das Setup der Entwicklungsumgebung unter Windows und MacOS, behandelt ein paar Grundlagen der Plugin-Entwicklung und steigt dann tief in den DSP Code und die GUI-Entwicklung ein.

Der Kurs nutzt das C++-Framework JUCE, welches speziell für Audio-Anwendungen optimiert ist. Auch wenn es zahlreiche Tutorials auf den JUCE-Webseiten gibt, ist dieses Videotutorial eine Spitzengelegenheit in die Materie einzusteigen. Und das Ganze dann auch noch völlig kostenlos!

JUCE 6 Tutorial: JUCE Framework unter Windows installieren…

Es wird mal wieder Zeit für ein Update zur aktuellen Version von JUCE. Seit ungefähr einem Jahr gibt es mittlerweile die Version 6 des beliebten C++ Frameworks zur Entwicklung von Audio-Plugins und ich möchte an dieser Stellen nochmal Schritt für Schritt durch die Einrichtung unter Windows 10 gehen.

Zunächst einmal installiere ich die aktuelle Version von Git. Dazu gehe ich auf die Git-Webseite und downloade den aktuellen Installer für ein 64Bit Windows. Nach dem Download kann ich Git einfach durch Starten des Installers installieren.

Während der Installation kann man Auswählen, welcher Code Editor standardmäßig mit Git verwendet werden soll. Hier kann man seinen installierten Editor auswählen (hier: Visual Studio Code), oder einen anderen Editor direkt installieren oder aber den Terminal-Editor Vim auswählen.

Faust – Echtzeit Audio Programmierung für Anwendungen und Plugins…

Faust (Functional AUdio STream) ist eine Programmiersprache, die speziell für die Erstellung von digitalen Synthesizern und Audio Effekten gedacht ist. Faust unterstützt das funktionale Programmierparadigma und man kann den geschriebenen DSP-Code schnell in eine andere allgemeine Programmiersprache, wie C, C++, Java, JavaScript oder Web Assembly, übersetzen.

Außerdem ist es möglich diesen generierten Code leicht in verschiedene Objekte zu kompilieren: Audio-Plugins, Standalone-Anwendungen, Smartphone- oder Web Apps.

Quelle: https://faust.grame.fr/

Faust Programme werden kompiliert und nicht interpretiert. Sie werden in möglichst optimierten C++ Code umgewandelt. Angeblich soll dieser generierte Code effizienter sein, als der den ein fortgeschrittener C++ Entwickler schreiben würde … zumindest genauso effizient. Hut ab!

Faust ist zwar im Grunde eine textuelle Sprache, aber trotzdem ähnelt das alles einem Block Diagramm. Sie vereint die funktionelle Programmierung mit dem Erstellen von Blockdiagrammen. Man programmiert quasi Blockdiagramme mithilfe von Funktionen. Kurz gesagt: Ein Faust Programm beschreibt einen Signalprozessor.

Die meisten Audiotools können als Signalprozessoren dargestellt werden. Sie verfügen über Audio-Ein– und –Ausgänge und Kontrollsignale werden mithilfe von Drehreglern, Schiebern und diversen Anzeigen dargestellt.

Audio Programmierung #06 – C++ Grundlagen: Die Kontrolle des Programmablaufs (switch-case)

Das Ziel eines switch-case Konstrukts ist es, einen Ausdruck gegen eine größere Auswahl von Konstanten zu vergleichen und dann dementsprechend für jede Möglichkeit etwas anderes auszuführen. Die C++ Schlüsselwörter, die wir in diesem Zusammenhang oft sehen werden, sind switch, case, default und break.

Die allgemeine Syntax sieht so aus:

switch(expression) {

    case LabelA:
        DoSomething;
        break;

    case LabelB:
        DoSomethigElse;
        break;

    // and so on ...
    default:
        DoStuffWhenExpressionIsNotHandledAbove;
        break;
}
    

VST-Plugin Programmierung #04 – Eine JUCE GUI Anwendung kann mehr als nur Text darstellen…

Im letzten Artikel haben wir unserer GUI Anwendung mithilfe einer Komponente (main component) etwas Inhalt geschenkt. Dieser Inhalt bestand aber nur aus einfachem Text. Das geht natürlich noch besser. Wir machen zunächst ungefähr da weiter, wo wir das letzte mal aufgehört haben. Dazu öffnen wir das letzte Projekt MainComponentTutorial nochmal und ändern die paint() Methode wieder so ab, dass uns das beliebte „Hello World!“ wieder angezeigt wird. Außerdem können wir dann auch die Member-Variable currentSizeAsString wieder entfernen (auch deren Nutzung in der resize() Methode).

Damit sieht unsere paint() Methode wieder so aus:

void MainComponent::paint (Graphics& g)
{
    g.fillAll(Colours::darkgrey);
    g.setColour (Colours::orange);
    g.setFont (28.0f);
    g.drawText ("Hello World!", getLocalBounds(),
                Justification::centred, true);  
}

Wenn wir das Projekt nun kompilieren und ausführen, haben wir wieder unser dunkelgraues Fenster mit dem orangen „Hello World!“ Text in der Mitte.

Mithilfe der Graphics Klasse können wir nun noch andere Dinge in unsere MainComponent „zeichnen“.

VST-Plugin Programmierung #03 – Die JUCE GUI Anwendung mit Leben füllen…

Das letzte mal haben wir uns eine minimale GUI Anwendung geschrieben, die zunächst ein einfaches Fenster darstellt. Wir haben etwas mit einigen Einstellungen herumgespielt, aber mehr auch nicht. Heute wollen wir diese Anwendung einmal mit Inhalt füllen.

Auch hier möchte ich mich wieder an den offiziellen JUCE Tutorials orientieren und nenne unser heutiges JUCE-Projekt MainComponentTutorial. Also starte ich wieder den Projucer, erstelle eine GUI Applikation, benenne mein Projekt und lasse wieder nur die Main.cpp generieren (create a Main.cpp only) und öffne meine IDE (Visual Studio).

Genau wie das letzte mal erstelle ich mir zunächst eine MainWindow Klasse und fülle die initialise() und shutdown() Methode mit Leben. So dass meine Main.cpp jetzt so aussieht:

VST-Plugin Programmierung #02 – Eine grundlegende JUCE GUI Anwendung (Application window)

In der Regel verfügen Audio-Plugins – egal ob Effekt oder Instrument – über eine grafische Benutzeroberfläche (GUI). Aus diesem Grund wollen wir heute mal damit anfangen, eine minimale Anwendung in einem Fenster zu generieren und ein wenig das Aussehen unserer App ändern. Diese Einführung ist an den offiziellen Tutorials der JUCE Website angelehnt, daher nutze ich die gleichen Namen für die Projekte.

Wir starten zunächst mal den Projucer und wählen die Option GUI Application. Das Projekt nennen wie MainWindowTutorial. Oben rechts im Projucer kann ich an dieser Stelle auswählen, welche Quellcode-Dateien erzeugt werden sollen. Hier wählen wir „Create a main.cpp file only„.

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.

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.

Seite 1 von 2

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