Kategorie: DIY Seite 3 von 6

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„.

Audio Programmierung #04 – C++ Grundlagen: Anweisungen, Ausdrücke und Operatoren…

Im Grunde ist ein Programm, sei es in C++ geschrieben oder in einer anderen Programmiersprache, nichts anderes als Kommandos, die nacheinander abgearbeitet werden. Diese Kommandos bestehen aus Ausdrücken und Anweisungen und nutzen Operatoren um bestimmte Berechnungen oder andere Aktionen auszuführen.

Anweisungen

Die erste wichtige Anweisung, die wir gelernt haben:

cout << "Hello World!"  << endl;

Eine Anweisung mit cout gibt Text im Terminal auf dem Bildschirm aus. In C++ enden alle Anweisungen mit einem Semikolon (;). Das Semikolon markiert die Grenze oder das Ende einer Anweisung, vergleichbar mit dem Punkt (.) in der deutschen Sprache. Die nächste Anweisung könnte direkt hinter dem Semikolon beginnen, aber aus Gründen der Übersichtlichkeit ist es ratsamer eine neue Anweisung auch in einer neuen Zeile zu beginnen.

Abenteuer Sound Design #04 – Claps mit Bitwig’s Grid und Found Sounds

Kick, Snare, Hihat … heute kommen dann wohl die obligatorischen Claps dran. Claps sind ja einfach zwei Hände, die zusammengeklatscht werden 🙂 Da werden wir uns wohl auch noch eine gesampelte Version ansehen, denn nichts ist einfacher als ein Händeklatschen aufzunehmen.

Für die Synthesizer-Version würde ich mich an die klassischen 808-Claps anlehnen, diese sind nämlich recht raffiniert umgesetzt. Die Wellenform zeigt, dass es sich um fünf klatschende Hände handelt, die alle etwas zeitversetzt tönen. D.h. man könnte 5 mal Noise nehmen und die Hüllkurven alle etwas im Attack versetzen und das letzte Klatschen etwas länger ausklingen lassen.

D.h. wir benötigen 5 Noise Generatoren und 5 ADSR Envelope Generatoren. Diese werden an einen Mixer angeschlossen und dieser an ein Audio-Out Modul. Das Sustain des ADSR drehe ich bei allen Hüllkurven auf 0ms, das Attack zunächst auch auf 0ms und das Decay so ungefähr auf 30-40ms. Das Decay der letzten Hüllkurve stelle ich aber auf ca. 200ms.

5 Claps …

Klevgränd’s Ting macht die kleinen Dinge zu einem wunderbaren Percussion Instrument … und mir stellt sich die Frage, ob man das nicht auch selbst machen kann?

Klevgränd hat wieder ein neues Instrument raus gebracht. Einen Sample-Player, mit 12 gesampleten Sounds von Dingen, die eigentlich fast jeder zuhause rumliegen hat. Natürlich ist das GUI der Schweden wieder herzallerliebst und die Sounds klingen super.

Unter den einzelnen Samples finden wir u.a. Autoschlüssel, Besteck, eine Tasse, ein geschlagenes Sofa, Papier und ein paar Körperteile. Dazu gibt es einen einfachen Equalizer, Hall und einen Kompressor. Zusätzlich lässt sich bei jedem einzelnen Instrument das Panning, die Lautstärke, Dynamiken, Reverb (mehrere Rooms und einen einige algorithmische Reverbs), sowie die Tonhöhe individuell einstellen.

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.

Abenteuer Sound Design #03 – HiHat mit Bitwig’s Grid

Nach Kick Drum und Snare kommt natürlich ein HiHat an die Reihe. Ich benutze wieder Bitwig’s Grid hierfür. Normalerweise könnten wir das HiHat in wenigen Zeilen abfrühstücken, denn wenn man ganz schnell den typischen Sound eines typischen 808 HiHats generieren möchte, nimmt man sich einen Noise-Generator, einen ADSR und schon wäre man fast fertig. Der typische HiHat Sound einer 808 Drum Machine ist einfach nur Noise.

Typische HiHat (Quelle: keymusic.com)

Aber wir machen uns das nicht ganz so einfach. Mithilfe der Frequenzmodulation und 3 oder mehreren Sinuswellen-Oszillatoren läßt sich auch ein nettes Ergebnis erzielen, mit dem man den Klang noch etwas mehr variieren kann.

Max/MSP – Ich habe Max wiederentdeckt und mich erneut verknallt.

Ich hab vor zwei Jahren schon mal etwas mit Max For Live herumprobiert und dann wieder links liegen gelassen … wie so oft. Jetzt, wo ich seit ein paar Wochen wieder Hals über Kopf in die Programmierung eingestiegen bin (C++, Csound, Python) und ich nicht genug davon kriegen kann, habe ich mir überlegt mich nochmal mit Max anzufreunden. Ich fand Pure Data schon spannend, aber das läuft bei mir unter Win und MacOS so unstabil, dass es einfach keine Freude macht damit zu arbeiten.

Ich habe ein paar Artikel und Videos über Max gelesen und gesehen … und bin begeistert. Besonders die Möglichkeiten mit gen~ gehen mir nicht mehr aus dem Kopf. Ja, kann sein, dass ich im Moment zu viele Baustellen offen habe, aber die 30tägige Testversion von Cycling74 kommt mir gerade recht. 😀 Außerdem gibt es ein Subscription Modell für unter 10 Euro im Monat.

Quelle: cycling74.com

Was ist Max und was bedeutet MSP?

Max ist eine Programmierumgebung, in der man verschiedene Objekte mit eine Art Patchkabel verbindet. Jedes dieser Objekte hat eine andere Aufgabe, vergleichbar mit Funktionen in herkömmlichen Programmiersprachen. Der Name Max soll an Max Mathews (Entwickler der Audio-Programmiersprache MUSIC) erinnern. Max wurde für die Echtzeitkontrolle von Midi-Daten entwickelt, kann aber auch einfach Zahlen und Zeichen verarbeiten.

Abenteuer Sound Design #02 – Snare Drum mit Bitwig’s Grid

Das letzte mal ging es um ein Kick Drum, heute versuchen wir mal ein Snare Drum mithilfe eines Synthesizers zu designen. Die Found Sound Variante lasse ich heute mal weg, weil das für ein Snare Drum nicht allzu interessant ist. Ich will heute auch mal Bitwig’s Grid benutzen, weil ich das gerade mal wieder für mich entdeckt habe. Ich möchte mich bei der Wahl des Software Synths nicht so festlegen, es kann sein dass ich das nächste mal wieder VCV Rack oder auch Max/MSP (darauf hätte ich mal wieder richtig Lust…) benutze, mal sehen…

Ein Snare Drum lässt sich eigentlich ähnlich wie ein Kick Drum bewerkstelligen, nur dass hier der Noise Anteil etwas wichtiger ist. Wenn man sich mal ein akustischen Snare ansieht und anhört, kann man unten ein kleines Netz aus Metallspiralen sehen und hören, dass dieses typische Schnarren erzeugt.

Den Körper des Snares ahmen wir wieder mit einem Sinus Oszillator nach, für das Schnarren nehmen wir ein Noise Modul.

Oszillator und Noise im Grid…

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.

Seite 3 von 6

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