Wie wir schon vorher gesehen haben, können wir mit dem sleep
-Kommando
steuern, wann ein Klang zu spielen anfängt. Bislang konnten wir aber
noch nicht die Dauer eines Klangs steuern (außer bei Samples, die wir
strecken oder verdichten können).
Um die Dauer von Klängen auf einfache, aber tiefgehende Weise zu beeinflussen, bietet Sonic Pi das Prinzip der ADSR-Hüllkurve 1. (Wir werden später sehen, was ADSR genau bedeutet). Eine Hüllkurve hat zwei nutzbringende Eigenschaften:
Die Dauer bestimmt, wie lange ein Klang klingt. Eine erhöhte Dauer bedeutet, dass Du den Klang länger hören kannst. Alle Klänge in Sonic Pi haben eine Hüllkurve, die beeinflusst werden kann, und die gesamte Dauer dieser Hüllkurve bestimmt die Dauer des Klangs. Deshalb kann man über die Kontrolle der Hüllkurve die Dauer des Klangs beeinflussen.
Die ADSR-Hüllkurve kontrolliert nicht nur die Dauer, sondern ermöglicht Dir auch die genaue Kontrolle über die Amplitude eines Klangs. Alle Klänge beginnen und enden mit Stille; dazwischen ist irgendetwas hörbar. Hüllkurven erlauben Dir, die Amplitude der hörbaren Anteile des Klanges zu verschieben, zu verlängern und zu verkürzen. Es ist so, als würdest Du jemanden sagen, wie er die Lautstärke einer Musik lauter und leiser dreht. Du könntest denjenigen z.B. bitten: “Fang bitte mit einer Stille an, dreh dann die Lautstärke langsam bis zum Anschlag hoch, lass es eine Weile so und blende dann schnell runter, bis man nichts mehr hört”. Genau dafür sind in Sonic Pi die Hüllkurven da.
Wie wir vorher schon gesehen haben, bedeutet eine Amplitude von 0 Stille und eine Amplitude von 1 entspricht der normalen Lautstärke.
Standardmäßig haben alle Synths eine Release-Zeit von der Länge 1. Das
bedeutet, sie haben eine Dauer von 1 Schlagzeit (die in der Grundeinstellung
1 Sekunde lang ist), bevor sie verklungen sind. Über das das
release
-Argument der Funktion play
können wir diese Dauer verändern.
Damit ein Synth 2 Schläge lang spielt, übergeben wir z.B. einen
release
von 2
:
play 60, release: 2
Mit einer sehr kurzen Release-Zeit können wir den Synth-Klang auch sehr kurz machen:
play 60, release: 0.2
Also was ist nun die Release-Zeit? Es ist die Zeit, die der Klang braucht, um von der vollen Höhe der Kurve (typischerweise der Wert 1) bis auf Null abzufallen. Das nennt man auch die Release-Phase und es ist ein linearer Übergang (d.h. eine gerade Linie). Die folgende Abbildung zeigt, wie ein solcher Übergang aussieht:
Die senkrechte Linie ganz links im Bild zeigt, dass der Klang mit einer
Amplitude von 0 startet, jedoch sofort auf die volle Höhe geht (das ist
die Attack-Phase, die wir gleich ansehen werden). Wenn die volle Höhe
erreicht ist, geht die Amplitude in einer geraden Linie bis auf Null
zurück, wobei dies so lange dauert, wie es mit release
festgelegt
wurde. Je länger die Release-Zeit eines Synth, desto länger klingt
dieser aus.
Deshalb kannst Du die Länge eines Klangs ändern, wenn Du seine Release-Zeit änderst. Spiele einmal mit unterschiedlichen Release-Zeiten herum.
Standardmäßig ist die Attack-Phase für alle Synths 0, was bedeutet,
dass diese sofort von der Amplitude 0 auf 1 hochgehen. Dies gibt dem
Synth einen perkussiven Klang. Vielleicht möchtest Du den Klang jedoch
einblenden. Dies kannst Du mit dem attack
-Argument erreichen. Blende
einige Klänge ein:
play 60, attack: 2
sleep 3
play 65, attack: 0.5
Du kannst mehrere Argumente zur selben Zeit anwenden. Zum Beispiel für eine kurze Attack- und eine lange Release-Zeit:
play 60, attack: 0.7, release: 4
Diese Hüllkurve mit einem kurzen Attack und langem Release sieht so aus:
Natürlich kann man die Dinge auch umdrehen. Versuche einen langen Attack und einen kurzen Release:
play 60, attack: 4, release: 0.7
Schließlich kannst Du auch einen kurzen Attack und Release für kürzere Klänge verwenden.
play 60, attack: 0.5, release: 0.5
Zusätzlich zu den Attack- und Release-Zeiten kannst Du auch die Sustain-Zeit bestimmen. Das ist die Zeitdauer, die der Klang anhält, wenn er die eingestellte Lautstärke erreicht hat, also zwischen dem Attack- und dem Release-Stadium.
play 60, attack: 0.3, sustain: 1, release: 1
Die Sustain-Zeit kann man gut dafür gebrauchen, um wichtige Klänge in einem Mix hervorzuheben, bevor möglicherweise der Release einsetzt. Natürlich kann man ohne weiteres sowohl den Attack als auch den Release auf 0 setzen und nur den Sustain gebrauchen. Damit bekommt man einen Klang ohne Ein- und Ausblendung. Aber vorsicht, ein Release von 0 kann Klickgeräusche in der Aufnahme verursachen. Meist ist es besser, einen geringen Wert wie z.B. 0.2 zu verwenden.
Und schließlich, falls Du alles ganz genau beeinflussen möchtest,
kannst Du noch die Decay-Zeit festlegen. Das ist eine Phase der
Hüllkurve, die zwischen die Attack- und die Release-Phase passt; sie
gibt die Zeit an, wo die Amplitude vom attack_level
zum
sustain_level
hinunterfällt. Normalerweise steht das Decay-Argument
auf 0, während sowohl das Attack- als auch das Sustain-Level auf 1
stehen. Damit die Decay-Zeit einen hörbaren Effekt hat, müssen Attack
und Sustain also auch angegeben werden:
play 60, attack: 0.1, attack_level: 1, decay: 0.2, sustain_level: 0.4, sustain: 1, release: 0.5
Fassen wir noch einmal zusammen: Die ADSR-Hüllkurven von Sonic Pi bestehen aus den folgenden Phasen:
attack_level
benötigt,attack_level
zum sustain_level
übergeht,sustain_level
hält,sustain_level
auf 0 bringtEins ist wichtig: der Klang dauert so lange wie die Summe aller Zeiten der unterschiedlichen Phasen. Deshalb hat der folgende Klang eine Dauer von 0.5 + 1 + 2 + 0.5 = 4 Schlägen:
play 60, attack: 0.5, decay: 1, sustain_level: 0.4, sustain: 2, release: 0.5
Jetzt weisst Du, wie Du Deine Klänge mit Hüllkurven verändern kannst…
Der englische Begriff für Hüllkurve heißt Envelope.
ADSR steht als Kurzform für die Begriffe Attack, Decay, Sustain und Release, die in diesem Kapitel erklärt werden. ↩