Einführung in C++ (Teil 2)
In diesem nächsten Beispiel bzw. Tutorial sehen wir uns ein Programm zur Klangerzeugung (auch bekannt als Synthesizer) an, für das wir die SDL-Bibliothek (Simple Direct Media Library) verwenden. Wir gehen das Programm Zeile für Zeile durch und erklären die verschiedenen Elemente.
Fangen wir an…
Zunächst haben wir die Includes für die SDL-Bibliothek; die Header-Datei werden wir uns später ansehen. Außerdem inkludieren wir cmath für mathematische Funktionen und iostream für Ein- und Ausgabe (in diesem Beispiel jedoch nur für die Ausgabe).
C++-Einführungskurs (Teil 3)
Einführung in C++ (Teil 3)
C++ OOP-Meisterschaft: Die Kraft der Komposition (Has-A)
In der Softwarearchitektur gibt es zwei grundlegende Möglichkeiten, Objekte miteinander zu verbinden: Vererbung (Is-A) und Komposition (Has-A). Während Anfänger oft versuchen, alles durch Vererbung zu lösen („Ein Oszillator ist ein Hüllkurvenmodul“), bevorzugen Profis die Komposition: „Ein Synthesizer hat ein Hüllkurvenmodul.“
1. Warum Komposition?
Stellen Sie sich unseren Synthesizer als modulares Rack vor. Jedes Modul (Oszillator, Hüllkurvenmodul) ist eine eigenständige Klasse. Die SynthEngine fungiert
als Chassis, in das diese Module eingesteckt werden.
C++-Einführungskurs (Teil 4)
Von zustandslos zu zustandsbehaftet: Filter & Komposition
In den vorangegangenen Teilen haben wir einen Oszillator gebaut. Er war „zustandslos“ – man gibt ihm eine Phase vor, und er liefert einen Wert. Es ist ihm egal, was vor einer Mikrosekunde passiert ist. Damit Musik jedoch „warm“ oder „organisch“ klingt, brauchen wir Objekte, die über ein Gedächtnis verfügen.
1. DSP allgemein: Das Konzept des Zustands
In der digitalen Signalverarbeitung (DSP) ist ein Filter zustandsbehaftet. Um den aktuellen Ausgangswert zu berechnen, muss ein Filter den vorherigen Ausgangswert kennen.