# Geluidsduur met “Envelopes”

In een eerdere sectie, hebben we gezien hoe we de opdracht ‘sleep’ gebruiken om te bepalen wanneer we onze geluiden activeren . We zijn echter nog in staat geweest om te bepalen hoe lang onze klank duurt.

Om ons een eenvoudig maar krachtig middel te geven waar we de controle hebben over de tijdsduur van onze klank, biedt Sonic Pi ons een zekere manier van notering van een zogenaamde ADSR amplitude envelope (we bespreken later in deze sectie wat dat betekent). Een amplitude “envelope” biedt twee manieren van controle:

- controle over de duurtijd van een klank
- controle over de amplitude van een klank

## Duurtijd

De duurtijd is de lengte dat een klank aanhoud . Een langere duur betekent dat u de klank langer hoort. De klanken van Sonic Pi hebben allen een instelbare amplitude envelop, de totale duur van die envelop is dan de totale duurtijd van die klank. Daarom kan je, door het instellen van de envelop, de duurtijd bepalen.

## Amplitude

De ADSR envelop regelt niet alleen de duurtijd, het geeft je ook een fijnregeling van de geluidssterkte van de klank. Alle hoorbare klanken starten en eindigen van en naar onhoorbaarheid en bevatten, tussendoor, luidere en minder luide delen. De ASDR envelop staat je toe de geluidssterkte van de hoorbare gedeelten van een klank te verschuiven en vast te houden. Zoals je iemand instructies zou geven aan het volume van een gitaarversterker en deze van stil, naar langzaam omhoog tot het hoogste volume en deze even aan te laten houden, om deze dan, snel of traag, terug naar stil te brengen. Door de envelop kan je dit gedrag in Sonic Pi programmeren.

Even recapituleren, zoals we eerder hebben gezien, is een amplitude van 0 is stilte en een amplitude van 1 is het normale volume.

Laten we nu kijken naar elk onderdeel van de envelop.

## Release fase

Het enige deel van de envelop die standaard wordt gebruikt is de release tijd. Dit is de tijd die nodig is om het geluid van een synth uit te vervagen. Alle synthesizers hebben een release tijd van 1, wat betekent dat ze standaard een duur van 1 beat hebben (en dus op onze standaard 60 BPM, 1 seconde lang is):

    play 70

De noot zal 1 seconde lang hoorbaar zijn. Chronometreer maar :-) Dit is de verkorting van de langere, meer uitgesproken versie:

    play 70, release: 1

Merk op dat deze exact hetzelfde klinkt (de klank duurt één seconde). Het is dus heel makkelijk om de duurtijd in te stellen door de waarde te veranderen van de `release:` optie:

    play 60, release: 2

We kunnen de synth voor een heel korte tijd laten klinken door een heel korte release tijd te gebruiken:

    play 60, release: 0.2

De duur van het “vrijlaten” van het geluid noemen we de release fase en staat standaard op een lineaire overgang ingesteld (dwz rechtlijnig).Het volgende diagram illustreert deze overgang:

De verticale lijn aan de linkerkant van het diagram toont ons dat het geluid bij amplitude 0 begint, onmiddellijk klimt naar volledige amplitude (dit is de aanslag fase, die zullen we vervolgens bespreken). Eens bij volledige amplitude gaat het in een rechte lijn naar nul zakken in de tijd die is opgegeven met `release:`. Langere release tijden leveren een langer verloop, waarmee het geluid van de synth uitvaagt, op

Je kan dus de duurtijd van je klank veranderen aan de hand van de release tijd. Speel hier even mee, door deze release tijden toe te voegen aan je klanken.

## Aanslag fase (de Attack)

De aanslag fase is voor alle synths standaard ingesteld op 0, wat betekend dat deze onmiddellijk van 0 naar 1 gaat. Dit geeft aan de synth een korte hevige klank zoals bij een percussie-instrument. Maar misschien wil je je geluid zachtjes luider laten worden. Dit kunnen we met de `attack:` optie. Probeer nu eens van klanken te laten aanzwellen:

    play 60, attack: 2
    sleep 3
    play 65, attack: 0.5

Je kan meerdere opties tegelijk kiezen. Probeer deze bijvoorbeeld voor een kortere aanslag en een langere uitloop:

    play 60, attack: 0.7, release: 4

Deze korte attack en lange release envelop wordt geïllustreerd in het volgende diagram:

Natuurlijk, kan je de dingen omdraaien. Probeer een lange attack en een korte release:

    play 60, attack: 4, release: 0.7

Voorts kan je ook korte Attack en release tijden hebben voor korte klanken.

    play 60, attack: 0.5, release: 0.5

## SustainFase

Naast het opgeven van attack en release tijden, u kunt ook een sustain-tijd opgeven om de sustain fase in te stellen. Dit is de tijd dat het geluid bij een volledige amplitude tussen de attack en de release fase wordt gehandhaafd.

    play 60, attack: 0.3, sustain: 1, release: 1

De sustain-tijd is nuttig voor de klanken die je een volledige tegenwoordigheid in de mix wil geven voordat deze een release fase doorlopen. Natuurlijk, is het volkomen geldig om zowel de `attack:` als de `release:` optie in te stellen op 0, om gewoon geen fade in- of fade out aan het geluid toe te voegen. Maar hier moet je mee opletten, een release van 0 kan klikjes in de audio produceren en het is vaak beter om een zeer kleine waarde te gebruiken zoals 0,2.

## Verval fase (Decay Phase)

Voor een extra controle niveau kunt u ook de verval tijd instellen. Dit is de fase van de envelop die past tussen de attack en sustain fasen en geeft u een tijdwaarde waarbij de amplitude zal dalen het `attack_niveau:` naar het `decay_niveau:` (die, tenzij u die expliciet instelt, op het ‘ sustain_niveau:’ gebracht zal worden). Standaard, is de `decay:` optie 0 en hebben zowel attack en sustain niveaus zijn 1, deze zal je dus moeten opgeven voor de verval tijd effect heeft:

    play 60, attack: 0.1, attack_level: 1, decay: 0.2, sustain_level: 0.4, sustain: 1, release: 0.5

## Verval niveau

Eén laatste truc is dat, hoewel de `decay_level:` optie standaard dezelfde waarde heeft ingesteld als `sustain_level:`, je deze wel expliciet kan instellen op verschillende waarden voor de volledige controle over de envelop. Hierdoor kan je een envelop maken zoals deze:

    play 60, attack: 0.1, attack_level: 1, decay: 0.2, decay_level: 0.3, sustain: 1, sustain_level: 0.4, release: 0.5

Het is ook mogelijk om het `decay_niveau:` hoger te zetten dan het `sustain_niveau:`:

    play 60, attack: 0.1, attack_level: 0.1, decay: 0.2, decay_level: 1, sustain: 0.5, sustain_level: 0.8, release: 1.5

![ASR envelope](../../../etc/doc/images/tutorial/env-decay-level-2.png

## ADSR Enveloppen

Dus samengevat , hebben Sonic Pi’s ADSR enveloppen de volgende fasen:

1. attack - tijd vanaf 0 amplitude naar `attack_niveau`,
2. decay - tijd om de amplitude van `attack_niveau` naar `decay_niveau` te brengen,
3. sustain - tijd om de amplitude van `decay_niveau` naar `sustain_niveau` te brengen,
4. release - tijd om de amplitude van `sustain_niveau` naar 0 te brengen

Het is belangrijk op te merken dat de duur van een geluid de som is van van de tijd van elk van deze fasen. Daarom zal het volgende geluid een duur van 0,5 + 1 + 2 + 0,5 = 4 hebben:

    play 60, attack: 0.5, attack_level: 1, decay: 1, sustain_level: 0.4, sustain: 2, release: 0.5

Nu gaan we hiermee spelen, door deze envelop aan jouw klanken toe te voegen…