Listing 3 zeigt eine solche Funktionsdefinition. Die Verwendung läuft dann genauso wie bei den eingebauten Funktionen: Sie schreiben den Funktionsnamen einfach hin (letzte Zeile). In unserem Fall heißt die neue Funktion schnipser und macht bei jedem Aufruf exakt dasselbe.
Listing 3
define :schnipser do
8.times do
sample :perc_snap
sleep 1.0 / 8
end
end
schnipser
Eine zweite Version in Listing 4 bietet die Möglichkeit, mittels zweier Argumente die Ausführung der Funktion zu modifizieren. Die Namen der Argumente schreiben Sie direkt zu Beginn des Funktionsblocks zwischen zwei Pipe-Zeichen (siehe erste Zeile: |dauer, teiler|). Die Argumente setzen Sie dann an den entsprechenden Stellen ein (siehe Zeilen 2 und 4).
Listing 4
define :schnipser do |dauer, teiler|
teiler.times do
sample :perc_snap
sleep dauer / teiler
end
end
schnipser 1.0, 4
schnipser 1.0, 8
schnipser 1.0, 3
Eine dritte Version der Schnipser-Funktion bietet zwei weitere Verbesserungen: Die Abspielgeschwindigkeit des Samples variiert geringfügig (siehe Zeile 4). Zudem schicken wir den Klang noch durch einen Hochpassfilter, um störende tiefe Frequenzen zu entfernen (siehe Zeilen 2 und 7).
Listing 5
define :schnipser do |dauer, teiler| with_fx :hpf do teiler.times do sample :perc_snap, rate: rand(0.8..1.2) sleep dauer / teiler end end end live_loop :schnips_loop do schnipser 1.0, 4 schnipser 1.0, 8 schnipser 1.0, 3 sleep 1 end
Sonic Pi merkt sich die innerhalb einer Sitzung definierten Funktionen. Sie können also benötigte Funktionsdefinitionen in einen eigenen Textbuffer schreiben und einmal zu Beginn ausführen. Zudem besteht die Möglichkeit, eigene Funktionsdefinitionen in die Datei ~/.sonic-pi/init.rb zu schreiben, die Sonic Pi bei jedem Start automatisch ausführt.
Für das Live-Coding bietet es sich an, Funktionsdefinitionen zur Laufzeit zu bearbeiten, anstatt direkt in den Live-Loops Code zu ändern – das schafft deutlich mehr Übersicht.
Der Autor
Der Medienkünstler Pit Noack, ein Sonic-Pi-Nutzer der ersten Stunde, gibt in seinem Atelier in Hannover Programmierkurse zu Sonic Pi, Python und Processing für Laien und Profis.





