1.1 Live-Coding

# 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:

* Ändere die blauen Werte hinter `rate:` und achte darauf, wie sich das Sample verändert.
* Ändere die `sleep`-Zeiten, und achte darauf, wie die beiden Schleifen mit unterschiedlicher Geschwindigkeit aneinander vorbei laufen.
* Versuche die auskommentierte Sample-Zeile zu aktivieren (entferne das `#`) und genieße den Klang einer umgekehrt abgespielten Gitarre.
* Probiere, die blauen Werte für `mix:` auf Werte zwischen `0` (nicht im Mix) und `1` (voll im Mix) zu ändern.

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…
