3.4 Samples mit Hüllkurven

# Samples mit Hüllkurven

Es ist auch möglich, die *Dauer* und *Amplitude* eines Samples mit einer ADSR-Hüllkurve zu verändern. Das funktioniert jedoch ein wenig anders als bei den ADSR-Hüllkurven für Synths. Sample-Hüllkurven können die Amplitude und die Dauer eines Samples nur verringern - niemals vergrößern. Das Sample wird entweder stoppen, wenn seine normale Laufzeit vorbei ist, oder wenn die Hüllkurve des Samples endet - je nach dem was zuerst passiert. Mit einem sehr langen `release:` lässt sich die Dauer eines Samples nicht verlängern.

## Amen-Hüllkurven

Kommen wir zu unserem vertrauten Freund zurück, dem Amen-Break:

```
sample :loop_amen
```

Ohne Opts hören wir das Sample in seiner gesamten Länge und mit voller Lautstärke. Wenn wir es über 1 Sekunde einblenden wollen, können wir den `attack:`-Parameter verwenden:

```
sample :loop_amen, attack: 1
```

Wähle für ein kürzeres Einblenden einen kürzeren Attack-Wert:

```
sample :loop_amen, attack: 0.3
```

## Auto-Sustain

Wo sich das Verhalten der ADSR-Hüllkurve von der Hüllkurve für Standard-Synths unterscheidet ist der *Sustain*-Wert. Bei der Hüllkurve für Standard-Synths steht der Sustain standardmäßig auf 0 - solange du den Wert nicht ausdrücklich setzt. Bei Samples steht der Sustain-Wert standardmäßig auf *automagical* - das ist in jedem Moment die Zeit, die es braucht, bis der Rest des Samples abgelaufen ist. Darum hören wir das Sample komplett, wenn wir keine Default-Werte übergeben. Wenn die Werte für Attack, Decay, Sustain und Release alle auf 0 stünden, würden wir keinen Pieps hören. Daher berechnet Sonic Pi, wie lange das Sample an sich dauert, zieht jegliche Werte für Attack, Decay und Release davon ab und setzt die restliche Zeit als Sustain-Wert. Wenn die Werte von Attack, Decay und Release zusammengerechnet länger dauern als das gesamte Sample, wird der Sustain-Wert einfach auf 0 gesetzt.

## Ausblenden

Um das auszuprobieren, schauen wir uns den Amen-Break im Detail an. Wenn wir Sonic Pi fragen, wie lang das Sample ist:

```
print sample_duration :loop_amen
```

Wird `1.753310657596372` ausgeben, was der Länge des Sample in Sekunden entspricht. Wir runden das zur Vereinfachung auf `1.75` ab. Wenn wir nun den Release-Wert auf `0.75` setzen, wird etwas erstaunliches passieren:

```
sample :loop_amen, release: 0.75
```

Die erste Sekunde des Sample wird mit voller Lautstärke gespielt, danach wird über eine Periode von 0.75 Sekunden ausgeblendet. Das ist der *Auto-Sustain* in Aktion. Standardmäßig berechnet Sonic Pi den Release immer vom Ende des Samples aus gesehen. Wenn unser Sample 10.75 Sekunden lang wäre, würden die ersten 10 Sekunden in voller Lautstärke gespielt, bevor über 0.75 Sekunden das Ausblenden erfolgt.

Merke: Normalerweise blendet `release:` das Ende des Sample aus.

## Ein- und Ausblenden

Wir können beide, `attack:` und `release:`, gemeinsam mit dem Auto-Sustain nutzen, um über die Dauer des Samples ein- und auszublenden:

```
sample :loop_amen, attack: 0.75, release: 0.75
```

Da die Gesamtdauer des Sample 1.75s beträgt und unsere Attack- und Release-Phasen zusammen 1.5s ergeben, erhält die Sustain-Phase automatisch eine Länge von 0.25s. So ist es ganz einfach, das Sample ein- und auszublenden.

## Ausdrücklicher Sustain

Wir können ohne weiteres wieder das normale Synth-ADSR-Verhalten aktivieren, indem wir `sustain:` auf den Wert 0 setzen:

```
sample :loop_amen, sustain: 0, release: 0.75
```

Jetzt spielt unser Sample insgesamt nur für 0.75 Sekunden. Mit dem Standardwert 0 für `attack:` und `decay:` springt das Sample direkt auf die volle Lautstärke, bleibt dort für 0s und fällt dann innerhalb der Release-Phase mit einer Dauer von 0.75s auf die Lautstärke 0 ab.

## Perkussive Becken

Wir können dieses Verhalten gut dazu benutzen, um länger klingende Samples in kürzere, perkussivere Versionen zu verwandeln. Sieh dir das Sample `:drum_cymbal_open` an:

```
sample :drum_cymbal_open
```

Du kannst hören, wie das Becken eine Zeit lang ausklingt. Mit einer leicht veränderten Hüllkurve können wir es perkussiver klingen lassen:

```
sample :drum_cymbal_open, attack: 0.01, sustain: 0, release: 0.1
```

Du kannst den Eindruck eines Anschlagens und Abdämpfens des Beckens erzeugen, indem du die Sustain-Phase erhöhst:

```
sample :drum_cymbal_open, attack: 0.01, sustain: 0.3, release: 0.1
```

Jetzt versuche Hüllkurven über Samples zu legen. Verändere auch die Samplerate - damit kannst du wirklich interessante Ergebnisse erzielen.
