Ruby als Kompositionswerkzeug: Sonic Pi
(bhmt.dev)-
Sonic Pi: Ruby als Kompositionswerkzeug verwenden
-
Hintergrund
- Der Autor hatte ursprünglich Musik studiert
- Während der Arbeit als Webentwickler begann er, sich immer stärker für technische Arbeit zu begeistern
- Da es schwierig war, verschiedene Instrumente zu beherrschen, versuchte er sich an elektronischer Musik, scheiterte jedoch
- Kürzlich brachte ihn Sonic Pi wieder dazu, Musik und Coding zu verbinden
-
Einführung in Sonic Pi
- Sonic Pi, entwickelt von Sam Aaron, ist ein softwarebasierter Synthesizer, der per Code gesteuert wird
- Es nutzt eine domänenspezifische Sprache (DSL), die Ruby erweitert und musikalische sowie Audio-Konzepte abbildet
- So werden etwa Noten mit Symbolen wie
:c4dargestellt und Akkordgeneratoren wiechord(:d3, :maj7)verwendet
-
Projektziel
- Ziel war es, ausschließlich mit Sonic Pi eine Demo zu komponieren
- Es wurde weder MIDI noch externe Samples verwendet, sondern rein per Code komponiert
-
Grundlegende Codebeispiele
- Mit
use_bpm 70wird die BPM festgelegt und mituse_synth :pulseder Synthesizer gesetzt - Code wie
play :c2,sleep 0.25spielt Noten ab und definiert Zeitabstände - Mit
play_pattern_timed [ :c3, :d3, :e3, :g3 ], 0.25wird ein Pattern abgespielt
- Mit
-
Code-Optimierung
- Um wiederkehrenden Code zu reduzieren, wurden Funktionen definiert
- Die Funktion
def arpeggiate(root, is_minor = false)erzeugt ein Arpeggio-Pattern - Mit dem Block
in_thread dowird Code parallel ausgeführt
-
Parallele Ausführung
- Mit
in_thread dolassen sich zwei „Instrumente“ parallel ausführen - Beispielsweise läuft in einem Thread ein Arpeggio und in einem anderen eine Melodie
- Mit
-
Umsetzung von Chorstimmen
- Mit
ringwerden mehrere Noten zu einer Liste kombiniert - Noten werden etwa mit
play_pattern_timed [ring(:c5, :e5)], 4, sustain: 3.8abgespielt und ihre Dauer festgelegt - Die Funktion
def choral_rings(notes, sus)vereinfacht das Erstellen von Chor-Patterns
- Mit
-
Live-Loops
- Mit
live_loopwerden Schleifen erzeugt, die sich unendlich wiederholen - Ein Loop wird etwa mit
live_loop :harp dodefiniert und mit Code gefüllt
- Mit
-
Fazit
- Programmieren ist nicht nur Wissenschaft, sondern auch Kunst
- Code zu schreiben ist ein kreativer Akt und eine Form der Kommunikation mit anderen
- Mit Sonic Pi lassen sich Musik und Coding zu kreativer Arbeit verbinden
Zusammenfassung von GN⁺
- Sonic Pi ist ein Werkzeug zum Komponieren von Musik mit Code und nutzt eine Ruby-erweiternde DSL
- Ziel dieses Projekts ist es, ausschließlich mit Sonic Pi eine Demo zu komponieren
- Programmierung hat neben der wissenschaftlichen auch eine künstlerische Seite, und Sonic Pi zeigt das gut
- Es ist ein gutes Beispiel dafür, wie sich Musik und Coding zu kreativer Arbeit verbinden lassen
- Ähnliche Werkzeuge mit vergleichbaren Funktionen sind TidalCycles und SuperCollider
1 Kommentare
Hacker-News-Kommentare
scampfür Python