3 Punkte von GN⁺ 2024-08-11 | 1 Kommentare | Auf WhatsApp teilen
  • 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 :c4 dargestellt und Akkordgeneratoren wie chord(: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 70 wird die BPM festgelegt und mit use_synth :pulse der Synthesizer gesetzt
    • Code wie play :c2, sleep 0.25 spielt Noten ab und definiert Zeitabstände
    • Mit play_pattern_timed [ :c3, :d3, :e3, :g3 ], 0.25 wird ein Pattern abgespielt
  • 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 do wird Code parallel ausgeführt
  • Parallele Ausführung

    • Mit in_thread do lassen sich zwei „Instrumente“ parallel ausführen
    • Beispielsweise läuft in einem Thread ein Arpeggio und in einem anderen eine Melodie
  • Umsetzung von Chorstimmen

    • Mit ring werden mehrere Noten zu einer Liste kombiniert
    • Noten werden etwa mit play_pattern_timed [ring(:c5, :e5)], 4, sustain: 3.8 abgespielt und ihre Dauer festgelegt
    • Die Funktion def choral_rings(notes, sus) vereinfacht das Erstellen von Chor-Patterns
  • Live-Loops

    • Mit live_loop werden Schleifen erzeugt, die sich unendlich wiederholen
    • Ein Loop wird etwa mit live_loop :harp do definiert und mit Code gefüllt
  • 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

 
GN⁺ 2024-08-11
Hacker-News-Kommentare
  • Wenn du dich für Live Coding interessierst, ist Glicol einen Versuch wert
  • TidalCycles ist ebenfalls empfehlenswert. Gelobt werden die DSL-Erzeugungsfähigkeiten von Haskell und Ruby
  • Das Sprachdesign von Glicol legt den Schwerpunkt auf eine von Synthesizern inspirierte Syntax, Kompositionsgeschwindigkeit und die Benutzerfreundlichkeit beim Sounddesign
    • Ziel ist es, eine DSL zu entwerfen, die bestehende Programmiergewohnheiten widerspiegelt, aber nicht an bestehende Sprachen gebunden ist
  • Ruby ist sehr nützlich, weil seine Syntax fast wie Englisch ist
  • Ich habe einmal eine Live-Performance von Sam Aaron, dem Schöpfer von Sonic Pi, gesehen
    • Beeindruckend war, wie sich die Musik mit jeder Codeänderung weiterentwickelte
  • Als Ruby-Entwickler finde ich es sehr spannend, dass man damit algorithmisch erzeugte Musik machen kann
    • Zum Beispiel könnte man damit laute Git-Repository-Ereignisse in algorithmische Musik verwandeln
  • Als Musiker ist es die bessere UX, ein MIDI-Keyboard oder akustische Instrumente aufzunehmen und zu loopen
    • Mit einer Ruby-DSL kann man zwar alles Mögliche eingeben, aber verglichen mit einer Klaviatur ist die UX nicht so gut
    • Ich würde es wahrscheinlich nicht als Ersatz für Logic verwenden
  • Als anderen Ansatz für programmierte Musik empfehle ich scamp für Python
    • Der Autor hat mehrere Videos auf YouTube hochgeladen
  • Vor ein paar Jahren habe ich ein YouTube-Video gesehen, in dem mit Sonic Pi die THX Deep Note nachgebaut wurde
    • Zuerst wurde nicht erklärt, was entstehen sollte, und durch schrittweise Klanganpassungen entstand am Ende die Deep Note
    • Schade, dass ich dieses Video nicht wiederfinden kann
  • In letzter Zeit habe ich wieder an Sonic Pi gedacht und mir einige Videos angesehen
    • Ich hatte es vor ein paar Jahren kurz ausprobiert
  • HTML-Kommentare funktionieren nicht richtig. Der Editor wandelt zwei Bindestriche in einen Geviertstrich um
  • Dem Sonic-Pi-Live-Coder alsoknownasrox sende ich aufmunternde Worte
  • Wirklich eine großartige Demo
    • Aber in Safari ist das Seitenlayout kaputt