Kategorie: C++ Seite 2 von 3

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.

Audio Programmierung #03 – C++ Grundlagen: Arrays und Zeichenketten

Was ist ein Array?

Ein Array ist quasi eine Gruppe von Elementen, die eine Einheit ergeben. Diese Elemente müssen alle vom selben Typ sein (z.B. Integer Zahlen) und der Speicher der einzelnen Elemente liegt fortlaufend hintereinander. Somit kann ich mithilfe eines Indexes auf ein bestimmtes Element des Arrays zugreifen.

Angenommen wir schreiben ein Programm, bei dem der Benutzer fünf Zahlen eingeben muss. Eine Möglichkeit wäre es für diese fünf Zahlen einzelne Variablen zu deklarieren:

int firstNum = 0;
int secondNum = 0;
int thirdNum = 0;
int fourthNum = 0;
int fifthNum = 0;

Falls der Benutzer nun 500 Zahlen eingeben müsste, hätten wir ein Problem. Mit viel Zeit und Geduld könnte man das so machen, aber es geht auch einfacher. Der bessere Weg wäre es, ein Array mit fünf Zahlen zu deklarieren und diese mit 0 zu initialisieren.

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.

SOUL – Könnte diese Sprache das ’nächste große Ding‘ im Bereich Audio Programmierung werden?

Julian Storer ist kein unbeschriebenes Blatt … JUCE, Tracktion und Kopf der Software-Abteilung bei ROLI. Vielbeschäftigter Mann. Trotzdem hat er die letzten Jahre an einer neuen Programmiersprache für Audio und Sound gearbeitet, die seit dem November letzten Jahres im Beta-Stadion ist. Echt jetzt? Noch eine neue Programmiersprache für den Bereich Audio? Jepp.

Quelle: soul.dev

SOUL heißt das Wunderkind und will die Audio-Programmierlandschaft umkrempeln. Aber SOUL ist keine generelle Sprache um Audio-Applikationen oder Plugins zu bauen. Diese Sprache ist speziell entwickelt worden, um Echtzeit-DSP Code zu entwickeln und ist gleichzeitig eine API, um diesen Code in alle möglichen Anwendungen und auch Hardware einzubinden.

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.

Audio Programmierung – Teil 01: Ein Einstieg mithilfe von VCV Rack

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…

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

Seite 2 von 3

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