# Duració amb envolupants

En una secció anterior hem vist com podem utilitzar l’ordre `sleep`per controlar quan disparar els sons. No obstant això, encara no hem pogut controlar la duració dels sons.

Amb l’objectiu de donar una manera senzilla però potent de controlar la duració dels sons, Sonic Pi proporciona el concepte d’una envolupant d’amplitud ADSR (exposarem més endavant en aquesta secció què significa ADSR). Una envolupant d’amplitud ofereix el control de dos aspectes molt útils:

control sobre la duració del so control sobre l’amplitud del so

## Duració

La duració és la longitud del so. Una duració major significa que escoltareu el so més temps. Tots els sons de Sonic Pi tenen una envolupant de control de l’amplitud, i la duració total de l’envolupant és la duració del so. Per tant, quan controlem la envolupant controlem la duració.

## Amplitud

L’envolupant ADSR no només controla la duració, també permet un control acurat de l’amplitud del so. Tots els sons audibles comencen i acaben en silenci, i contenen parts no silencioses enmig. Les envolupants permeten lliscar i mantenir l’amplitud de les parts no silencioses. És com donar-li instruccions a algú sobre com pujar i baixar el volum de l’amplificador d’una guitarra. Per exemple, podeu demanar-li a algú: “comença en silenci, puja lentament fins al volum màxim, manté un moment i ràpidament torna al silenci”. Sonic Pi permet programar exactament aquest comportament amb envolupants.

Només per recapitular el que ja hem vist abans, una amplitud de 0 és silenci i una amplitud d’1 és volum normal.

Ara, fem una ullada a cadascuna de les parts de les envolupants.

## Fase d’extinció (Release)

L’única part de l’envolupant que s’utilitza per defecte és el temps d’extinció (release). És el temps que tarda el so del sintetitzador fins que desapareix. Tots els sintetitzadors tenen un temps d’extinció de valor 1, que significa que per defecte té una duració d’una pulsació (amb una velocitat per defecte de 60 BPM, aquest so durarà un segon):

    play 70

La nota serà audible durant 1 segon. Vinga, cronometreu-ho :-) Aquesta és la manera més curta de dir el mateix que:

    play 70, release: 1

Noteu com els sons sonen exactament igual (el so dura un segon). No obstant això, ara és molt fàcil canviar la duració només modificant el valor de l’opció `release:`:

    play 60, release: 2

Podem fer que el so del sintetitzador sone durant un període molt curt de temps fent servir un temps d’extinció molt curt:

    play 60, release: 0.2

La duració de l’extinció del so és el que s’anomena fase d’extinció i per defecte és una transició lineal (això és, una línia recta). El diagrama següent il·lustra aquesta transició:

La línia vertical a l’esquerra del diagrama mostra que el so comença amb amplitud 0, però arriba immediatament a amplitud completa (això és la fase d’atac, de la qual en parlarem a continuació). Una vegada l’amplitud ha arribat al seu punt màxim, es mou en línia recta cap avall fins arribar a 0, prenent la quantitat de temps especificada en `release:`. *Quan més llargs són els temps d’extinció (release), més tarda el sintetitzador a esvair el so.”

Podeu, per tant, canviar la duració del so canviant el temps d’extinció (release). Proveu d’afegir temps d’extinció a la música.

## Fase d’atac

Per defecte, la fase d’atac és 0 per a tots els sintetitzadors, fet que significa que passen immediatament d’amplitud 0 a 1. Això li dona al sintetitzador un so inicial percussiu. No obstant això, podríeu desitjar que el so s’inicie de manera gradual. Això s’assoleix amb l’opció `attack:`. Proveu-ho amb diferents sons:

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

Podeu utilitzar diverses opcions al mateix temps. Per exemple, per a un atac curt i una extinció llarga, proveu:

    play 60, attack: 0.7, release: 4

Aquest envolupant de curt atac i llarga extinció es troba il·lustrat al següent diagrama:

Per descomptat, podeu canviar les coses. Proveu un atac llarg i una breu extinció:

    play 60, attack: 4, release: 0.7

Finalment, podeu obtenir un atac i una extinció curtes per a sons curts.

    play 60, attack: 0.5, release: 0.5

## Fase de sosteniment

A més d’especificar els temps d’atac i d’extinció, també podeu especificar un temps de sosteniment per a controlar la fase de sosteniment. Aquest és el temps durant el qual el so es manté en la seua amplitud màxima entre les fases d’atac i extinció.

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

The sustain time is useful for important sounds you wish to give full presence in the mix before entering an optional release phase. Of course, it’s totally valid to set both the `attack:` and `release:` opts to 0 and just use the sustain to have absolutely no fade in or fade out to the sound. However, be warned, a release of 0 can produce clicks in the audio and it’s often better to use a very small value such as 0.2.

## Fase de caiguda (decay)

For an extra level of control, you can also specify a decay time. This is a phase of the envelope that fits between the attack and sustain phases and specifies a time where the amplitude will drop from the `attack_level:` to the `decay_level:` (which unless you explicitly set it will be set to the `sustain_level:`). By default, the `decay:` opt is 0 and both the attack and sustain levels are 1 so you’ll need to specify them for the decay time to have any effect:

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

## Nivell de caiguda (decay)

One last trick is that although the `decay_level:` opt defaults to be the same value as `sustain_level:` you can explicitly set them to different values for full control over the envelope. This allows you to to create envelopes such as the following:

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

It’s also possible to set the `decay_level:` to be higher than `sustain_level:`:

    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

## ADSR Envelopes

So to summarise, Sonic Pi’s ADSR envelopes have the following phases:

attack - time from 0 amplitude to the `attack_level`, decay - time to move amplitude from `attack_level` to `decay_level`, sustain - time to move the amplitude from `decay_level` to `sustain_level`, release - time to move amplitude from `sustain_level` to 0

It’s important to note that the duration of a sound is the summation of the times of each of these phases. Therefore the following sound will have a duration of 0.5 + 1 + 2 + 0.5 = 4 beats:

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

Now go and have a play adding envelopes to your sounds…