Hallo Habr! Im letzten Artikel,
"ein unendliches Muster basierend auf Primzahlen", habe ich über einen Algorithmus gesprochen, mit dem Sie endlos schöne Muster erzeugen können, die entweder fremde Zeichnungen oder etwas Technologisches wie ein Chip-Gerät sind. Der Algorithmus zum Erzeugen von 2D-Mustern kann jedoch auch zum Erstellen von Melodien verwendet werden. Weitere Details unter dem Schnitt.
Algorithmus zur Erzeugung von Melodien
Um Melodien zu erzeugen, habe ich einen einfachen Mäandergenerator mit einem Fading-Signal erstellt. In diesem Fall können Sie mehrere Mäandergeneratoren übereinander überlappen. Als nächstes stellen wir die Perioden der Mäandergeneratoren gemäß den Frequenzen der Noten ein und stellen die Amplitude der Generatoren in Abhängigkeit vom Vorhandensein der "geklemmten" Taste ein. Als Signal für einen Tastenanschlag habe ich den Pixelwert eines 2D-Bildes verwendet, das aus einer vertikalen Spalte stammt, die um das Bild verschoben werden kann. Die Spalte enthält 14 Pixel, was 7 Noten der 2. und 3. Oktave entspricht. Eine Taste hat nur zwei Zustände - gedrückt oder nicht.
Den Mäandergenerator und Funktionen zum Speichern des Ergebnisses in einer WAV-Datei habe ich als separate Bibliothek für die Arbeit mit Sound implementiert. Sie ist
hier .
Das Programm zum Generieren von Musik kann hier eingesehen
werden . Es heißt simple_sound. Ready exe finden Sie im Archiv. Am Ausgang erstellt das Programm eine WAV-Beispieldatei.
Melodiebeispiele
Eine der interessantesten Melodien,
example_dx1000_dy1000_x2018_y8 . Der Name der Melodie zeigt die Größe der Verschiebung der X- und Y-Koordinaten sowie der Anfangskoordinaten. Andere Melodien:
example_dx_dy_x5678_y7768example_dx_dy_y776897123Beispiel_y47BeispielTheoretisch können Sie den Algorithmus verfeinern und für primitive Spiele verwenden, sodass sich die Melodien im Spiel nie wiederholen.