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

10/2019
Raspberry Pi 4B

Diese Ausgabe als PDF kaufen

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

Stellenmarkt

Neuigkeiten

  • Sonnige Zeiten

    UV-Strahlung ist für das menschliche Auge unsichtbar, was sie umso gefährlicher macht. Die Höhe der tatsächlichen Belastung verrät Ihnen das Selbstbauprojekt UV-Sensor.

  • Gut verpackt

    Für das Ansteuern kleiner Displays gibt es keine Programme von der Stange. Mit Python und einer Pygame-Bibliothek erstellen Sie trotzdem im Handumdrehen Anwendungen.

  • Macro-Mini-Micro-Bit

    Was dem Raspberry Pi für die Computerwelt gelungen ist, versucht der BBC Micro:bit für Mikrocontroller zu wiederholen. Das für Schüler entwickelte Kit hilft beim Einstieg in die hardwarenahe Programmierung.

  • Vorhang auf

    Mit dem modernen Video-Codec HEVC (H.265) erstellte Filme spielen bisherige RasPi-Modelle oft nur ruckelnd ab. Wir testen, ob der neue Raspberry Pi 4B das besser kann.

  • Überraschung!

    Eine optimierte Architektur und mehr RAM beschleunigen den RasPi 4B deutlich. Wir prüfen, wie gut sich der Neuling als Desktop-Rechner schlägt.

  • Durchgestartet

    Ein Stresstest zeigt, wie sich der neue Raspberry Pi 4 Modell B gegenüber den älteren Modellen abhebt.

  • Vierte Generation

    Eine schnellere CPU, USB 3.0 und Gigabit-Ethernet sind nur die Highlights des Raspberry Pi 4B: Das Board bringt viele weitere Neuerungen mit.

  • Tiefenmesser

    Um die Pumpe in einem Brunnenschacht möglichst genau zu positionieren, brauchen Sie dessen Tiefe. Die ermitteln Sie mithilfe eines präzisen Messgeräts aus einem Luftdrucksensor und einem Mikrocontroller.

  • Faktencheck

    Das via DVB-T2 ausgestrahlte Digital-TV liefert Bilder in HD-Qualität. Der dabei eingesetzte H.265-Standard überfordert allerdings kleine Mini-Rechner wie den Raspberry Pi – oder geht es doch?

  • Zugriff von außen

    React Native erlaubt es, Apps mit wenigen Zeilen Code zu programmieren. Mit einem entsprechenden Server sprechen Sie so den RasPi vom Smartphone aus an.