Live-Coding

Einer der aufregendsten Aspekte von Sonic Pi ist, dass du Code live schreiben und verändern kannst, um Musik zu machen. Ganz so wie du auch mit einer Gitarre auftreten würdest. Mit anderen Worten: Wenn du etwas Übung hast, kannst du Sonic Pi mit auf die Bühne nehmen und jammen.

Mach den Kopf frei

Bevor wir in diesem Tutorial in die ernsten Details von Sonic Pi eintauchen, möchte ich dir erst einmal zeigen, wie sich das anfühlt live Musik zu programmieren. Keine Sorge, wenn du nicht alles (oder auch nur irgend etwas davon) verstehst. Das macht nichts. Versuch’ an deinem Platz zu bleiben - und genieße …

Ein Live-Loop

Lass uns loslegen. Kopiere den folgenden Code in einen leeren Puffer:

live_loop :flibble do
  sample :bd_haus, rate: 1
  sleep 0.5
end

Jetzt klicke die Ausführen-Schaltfläche und du wirst eine schöne Bass-Drum hören, die schnell vor sich hin hämmert. Mit einem Klick auf den Stopp-Schaltfläche hört die Musik wieder auf. Aber klicke bitte noch nicht gleich darauf … probiere stattdessen die folgenden Schritte aus:

  1. Lass den Bass-Drum-Sound weiter laufen
  2. Setze den Wert von sleep von 0.5 auf einen höheren Wert, etwa 1.
  3. Klicke wieder die Ausführen-Schaltfläche
  4. Achte darauf, wie die Geschwindigkeit des Bass-Drum-Beats sich verändert hat.
  5. Und schließlich, merke dir diesen Moment! Dies war das erste Mal, dass du mit Sonic Pi live Programm-Code geschrieben hast. Und es ist wahrscheinlich, dass es nicht das letzte Mal gewesen sein wird …

Ok, das war einfach. Fügen wir etwas anderes hinzu. Über sample :bd_haus füge die Zeile sample :ambi_choir, rate: 0.3 ein. Dein Programm-Code sollte dann so aussehen:

live_loop :flibble do
  sample :ambi_choir, rate: 0.3
  sample :bd_haus, rate: 1
  sleep 1
end

So, jetzt spiele damit herum. Verändere die Werte für rate: – was passiert, wenn du hohe, niedrige oder negative Zahlen einträgst? Achte darauf, wie sich eine sehr kleine Änderung des rate:-Wertes auf das :ambi_choir-Sample auswirkt (z. B. 0.29)? Was passiert wenn du einen wirklich kleinen sleep-Wert einträgst? Probiere aus, ob du es so schnell machen kannst, dass du einen Stopp und eine Fehlermeldung deines Computers auslöst, weil er nicht mehr hinterher kommt. (Wenn das geschieht, nimm einfach wieder einen größeren Wert für sleep und klicke wieder auf Ausführen).

Versuche eine Zeile mit dem sample-Code auszukommentieren, indem du ein # an ihren Anfang schreibst:

live_loop :flibble do
  sample :ambi_choir, rate: 0.3
#  sample :bd_haus, rate: 1
  sleep 1
end

Beachte wie das Zeichen den Computer anweist die Zeile zu ignorieren - wir hören das Ergebnis des Befehls in dieser Zeile nicht mehr. Was hinter einem # steht ist ein Kommentar. Wir können dieses Zeichen in Sonic Pi benutzen, um Dinge schnell aus dem Mix zu entfernen und später wieder hinzuzuzufügen.

Abschließend möchte ich dir etwas unterhaltsames zum Spielen geben. Nimm den Code unten und kopiere ihn in einen freien Puffer. Versuche nicht mehr davon zu verstehen, als dass da zwei Loops sind – zwei Schleifen, die gleichzeitig laufen und sich endlos wiederholen. Jetzt tue, was du am besten kannst - experimentiere und spiele damit herum. Hier ein paar Vorschläge:

Denke daran Ausführen zu klicken, dann hörst du sofort beim nächsten Durchlauf eines Loops deine Änderungen. Wenn irgendwas schiefgeht – macht nichts! Klicke auf Stopp, lösche den kaputten Code im Puffer und fange mit einer frischen Kopie noch einmal von vorn an zu jammen. Am schnellsten lernst du, wenn du Fehler machst…

live_loop :guit do
  with_fx :echo, mix: 0.3, phase: 0.25 do
    sample :guit_em9, rate: 0.5
  end
#  sample :guit_em9, rate: -0.5
  sleep 8
end
live_loop :boom do
  with_fx :reverb, room: 1 do
    sample :bd_boom, amp: 10, rate: 1
  end
  sleep 8
end

Spiele solange herum und experimentiere, bis deine Neugierde einsetzt und du dich fragst, wie das hier alles eigentlich wirklich funktioniert, und was man noch so alles damit anstellen kann. Du bist jetzt bereit für den Rest dieses Tutorials.

Also, worauf wartest du…