Live-Coding

Mit Sonic Pi kannst Du etwas sehr aufregendes tun: Du kannst Musik aus Code live schreiben und verändern, während sie spielt. Fast so wie mit einer Gitarre. Mit anderen Worten: Du kannst Sonic Pi mit auf die Bühne nehmen und jammen.

Mach mal kurz den Kopf frei

Wir werden in diesem Tutorial in die Details von Sonic Pi eintauchen. Jetzt möchte ich Dir aber erst einmal zeigen, wie das ist, live Musik zu programmieren. Keine Sorge, Du wirst vielleicht nicht sofort alles verstehen. Aber das macht nichts. Genieße kurz diesen Einblick.

Eine Live-Loop

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

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

Jetzt drücke den Ausführen-Button und Du wirst eine schöne Bass-Drum hören, die schnell vor sich hin hämmert. Mit einem Druck auf den Stopp-Button hört die Musik wieder auf. Aber drücke bitte noch nicht darauf … sondern probiere die folgenden Veränderungen aus:

  1. Lass den Beat der Bass-Drum weiter laufen
  2. Verändere den Wert von sleep von 0.5 auf einen höheren Wert, etwa 1.
  3. Drücke wieder den Ausführen-Button
  4. Gemerkt? Die Geschwindigkeit der Bass-Drum hat sich verändert.
  5. Merke Dir diesen Moment. Du hast mit Sonic Pi zum ersten Mal live Code geschrieben. Wahrscheinlich wird es nicht das letzte Mal sein …

Ok, das war einfach. Verändern wir also die Zutaten ein wenig. Vor sample :bd_haus kannst Du die Zeile sample :ambi_choir, rate: 0.3 einfügen. Dein Code müsste 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, kleine oder negative Zahlen einträgst? Hast Du gemerkt, wie sich eine sehr kleine Änderung des rate:-Wertes für das :ambi_choir-Sample auswirkt (z. B. 0.29)? Was passiert bei einem wirklich kleinen sleep-Wert? Kannst Du eine Fehlermeldung Deines Computers auslösen, wenn Du den Wert immer kleiner werden lässt? (Wenn das geschieht, nimm einfach wieder einen größeren Wert für sleep und drücke auf Ausführen).

Kommentiere eine Code-Zeile aus, 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

Siehst Du? Jetzt ignoriert der Computer diese Zeile und wir hören den Befehl nicht mehr. Was hinter einem # steht ist ein Kommentar. Wir können dieses Zeichen benutzen, um Code schnell zu entfernen und später wieder einzufügen.

Zum Abschluss möchte ich Dir etwas zum Spielen geben. Nimm den Code unten und kopiere ihn in einen freien Puffer. Macht nix, Du musst noch nicht alles davon durchschauen, aber Du siehst, dass da zwei Loops sind – zwei Schleifen, die gleichzeitig laufen und sich endlos wiederholen. Jetzt tue, was Du am besten kannst: Experimentiere und spiele herum. Hier sind ein paar Vorschläge:

Vergiss nicht, Ausführen zu drücken, dann hörst Du sofort beim nächsten Durchlauf der Loops Deine Änderungen. Wenn irgendwas schiefgeht – macht nichts! Drücke Stopp, lösche den kaputten Code und fang mit dem ursprünglichen Code noch einmal von vorn an. Denn am besten lernt man beim Fehlermachen …

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 also 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. Jetzt bist Du bereit für den Rest dieses Tutorials.

Also, worauf wartest Du …