Audio-Programmierung mit Sonic Pi, Teil 3

© Olivier Le Moal, 123RF

Im Gleichtakt

Synchronisierte Live-Loops und selbst erstellte Funktionen helfen dabei, Sonic Pi wie ein Live-Instrument zu spielen.

Die ersten beiden Teile unserer Sonic-Pi-Serie haben die Grundlagen der Sprache vorgestellt und gezeigt, wie Sie eigenes Klangmaterial einbauen und ganze Verzeichnisbäume dynamisch nach Sounds durchsuchen. In Teil 3 geht es darum, wie Sie parallel laufende Live-Loops synchronisieren und eigene Funktionen schreiben.

Serie: Audio-Programmierung mit Sonic Pi

Teil 1

Einführung: Audio-Programmierung mit Sonic Pi

RPG 11-12/2018

http://www.raspi-geek.de/41258

Teil 2

Samples dynamisch auswählen und zerlegen

RPG 01-02/2019

http://www.raspi-geek.de/41259

Teil 3

Synchrone Live-Loops und eigene Funktionen

RPG 03-04/2019

http://www.raspi-geek.de/41260

Teil 4

MIDI- und OSC-Ereignisse verarbeiten

RPG 05-06/2019

(erscheint am 04.04.2019)

Dreh- und Angelpunkte

Ob live programmiert oder nicht: Live-Loops fungieren als Dreh- und Angelpunkt von Sonic Pi. Listing 1 zeigt zur Erinnerung ein einfaches Beispiel für deren Verwendung. Der Live-Loop :bd wiederholt den Code im zugehörigen Block (Zeilen 2 und 3) in einer Endlosschleife, der Live-Loop :snap wiederholt die Zeilen 6 bis 10. Beide Loops arbeiten in eigenen Threads, andernfalls würden sie nicht gleichzeitig spielen.

Listing 1

 

live_loop :bd do
  sample :bd_haus
  sleep 1
end
live_loop :snap do
  sleep 0.5
  3.times do
    sample :perc_snap
    sleep 0.5 / 3
  end
end

Wenn Sie den Code in einem der Blöcke ändern und erneut den Run-Knopf oder [Alt]+[R] drücken, führt Sonic Pi beim jeweils nächsten Schleifendurchgang den modifizierten Code aus. In Listing 1 böte es sich an, die Anzahl der Wiederholungen (3.times) oder die Dauer der Pausen zwischen den Schnipsern (sleep 0.5 / 3) im snap-Loop zu variieren. Dabei kann es schnell passieren, dass der Loop aus dem Ruder läuft – etwa wenn Sie zwischen Drittel- und Viertelschlägen wechseln oder schlichtweg die Dauer des Loops kein ganzzahliges Vielfaches eines Schlags beträgt.

Das parallele Ablaufen von Schleifen unterschiedlicher Länge kann interessante musikalische Effekte liefern, wie man sie aus afrikanischen Polyrhythmen oder den Phasenverschiebungen des Komponisten Steve Reich kennt. Hörenswert ist hierzu das Beispiel Reich Phase in der eingebauten Sonic-Pi-Hilfe.

Rädchen im Getriebe

Wenn Sie es aber darauf anlegen, mit Sonic Pi etwa elektronische Tanzmusik zu produzieren, dann benötigen Sie einen Mechanismus zur Loop-Synchronisation. Den liefert das Funktionspaar sync und cue, das ähnlich wie ein Mitnehmer in einem mechanischen Getriebe funktioniert. Wann immer an einer Stelle im Code sync Symbol steht, unterbricht Sonic Pi die Ausführung und wartet auf den Empfang des entsprechenden cue Symbol. Cue bedeutet auf deutsch so viel wie Hinweis oder Einsatzzeichen.

Listing 2 zeigt, wie die Loop-Synchronisation praktisch funktioniert. Zwei Zeilen sind neu: In Zeile 2 schickt cue :einsatz ein Einsatzzeichen. sync :einsatz in Zeile 7 unterbricht die Ausführung des snap-Loops bis zum Empfang des nächsten entsprechenden cue. Im Ergebnis startet der snap-Loop immer synchron mit einem Schlag der Bassdrum. Sie können nun nach Lust und Laune die Anzahl der Wiederholungen des Schnipsers in Zeile 9 und den Teiler in Zeile 11 ändern und erhalten im Ergebnis immer einen rund laufenden Beat.

Listing 2

 

live_loop :bd do
  cue :einsatz
  sample :bd_haus
  sleep 1
end
live_loop :snap do
  sync :einsatz
  sleep 0.5
  3.times do
    sample :perc_snap
    sleep 0.5 / 3
  end
end

Auch in Fehlersituationen erweist sich der cue-sync-Mechanismus als sehr nützlich. Wenn Sie einen Fehler in einen Live-Loop einbauen und ihn ausführen, stoppt Sonic Pi den zugehörigen Thread. Wenn Sie den Fehler korrigieren und den Code dann erneut ausführen, sorgt sync für einen rhythmisch korrekten Einsatz des neuen Threads.

Wollen Sie lediglich zwei Loops miteinander synchronisieren, dann können Sie auf die Verwendung von cue verzichten: Jeder Live-Loop schickt automatisch einen cue mit dem jeweils eigenen Namen. Sie können also das Beispiel in Listing 2 vereinfachen, indem Sie Zeile 2 streichen und Zeile 7 durch sync :bd ersetzen.

Übrigens: Unter Preferences | Editor können Sie einen Cue-Log aktivieren und so alle Cues anzeigen lassen. Die Funktion sync lässt sich auch nutzen, um auf MIDI- und OSC-Ereignisse zu warten und diese zu verarbeiten – das wird das Thema des vierten und letzten Teils unserer Sonic-Pi-Serie in der nächsten Ausgabe sein.

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 3 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Raspberry Pi Geek kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

Aktuelle Ausgabe

06/2019
Home Improvement

Diese Ausgabe als PDF kaufen

Preis € 9,99
(inkl. 19% MwSt.)

Stellenmarkt

Neuigkeiten

  • Verschlungene Pfade

    Mit Schleifen, Fallunterscheidungen und Funktionen programmieren Sie komplexe Skripte auf einfache und elegante Weise.

  • Extrem genau

    Mit einem A/D-Wandler messen Sie bei Bedarf Spannungen. Der MCP3424 macht dabei konstruktionsbedingt eine gute Figur.

  • Verbindungsaufnahme

  • Süßer Wecker

    Dem RasPi fehlen sowohl eine Echtzeituhr als auch ein BIOS, ein zeitgesteuertes Wecken erfordert also Zusatzkomponenten. Hier springt der Witty Pi Mini in die Bresche, ein µHAT von UUGear.

  • Windows to go

    Das Aufsetzen zuverlässiger und sicherer Remote-Desktop-Lösungen erfordert einiges Know-how. Die RasPi-basierte Pinbox von Pintexx reduziert den Konfigurationsaufwand auf ein Minimum.

  • Prima Klima

    In Museen ist es Pflicht, zu Hause nützlich: das permanente Prüfen und zentrale Erfassen der Feuchtigkeit und Temperatur in Räumen.

  • Auf einen Blick

    Ein maßgeschneiderter Infoscreen auf RasPi-Basis mit stromsparendem E-Ink-Display zeigt Termine, Bilder, Mitteilungen und Wetterinformationen an.

  • Sanft berührt

    Mit einem RasPi und dem Controllermodul PiXtend lassen sich mühelos Roboterarme ansteuern und deren Bewegung automatisieren.

  • Popcorn-Kino

    Mit Kodi 18.0 unterstützt LibreELEC 9.0 jetzt die von vielen Streaming-Diensten genutzte DRM-Verschlüsselung. Die Integration von Netflix, Amazon und Co. erfordert allerdings Handarbeit.

  • So nah und doch so fern

    Der RasPi kommt häufig als Server oder Steuerrechner für spezielle Zwecke zum Einsatz. Mit Anydesk erhalten Sie dazu eine Steuersoftware mit grafischer Oberfläche.