Este posibil sa modificam durata si amplitudinea unui esantion folosind o anvelopa ADSR. Totusi, functionarea va fi putin diferita fata de anvelopa ADSR folosita pentru sintetizatoare. Anvelopele pentru esantioane permit doar reducerea amplitudinii si duratei unui esantion - nu si marirea acestora. Esantionul se va opri fie cand s-a epuizat continutul sau fie cand s-a terminat anvelopa - in functie de care eveniment se produce primul. Deci, daca folosesti un ‘release:’ foarte lung, nu vei putea mari durata esantionului.
Sa ne intoarcem la esantionul cunoscut - Amen Break:
sample :loop_amen
Fara parametri, auzim esantionul intreg, la amplitudine intreaga. Daca vrem sa-l pornim treptat pe durata de 1 secunda, putem folosi parametrul ‘attack:’:
sample :loop_amen, attack: 1
Pentru o intrare mai rapida, alege un timp de atac mai mic:
sample :loop_amen, attack: 0.3
Anvelopa ADSR se comporta diferit data de cea pentru sintetizatoare in ceea ce priveste valoarea sustain (de mentinere). In cazul anvelopei standard pentru sintetizatoare, ‘sustain:’ avea implicit valoarea 0 daca nu il modificai manual. In cazul esantioanelor, ‘sustain:’ este calculat automagic ca timpul ramas de redat din sample. De aceea vom auzi intregul esantion daca nu transmitem valori. Daca valorile pentru attack, decay, sustain si release ar fi toate 0 nu am auzi nimic. Sonic Pi calculeaza cat de lung este esantionul, scade valorile pentru attack, decay si release si foloseste rezultatul ca valoare pentru sustain. Daca valorile pentru attack, decay si release depasesc durata esantionului, valoarea pentru sustain va fi 0.
Pentru a examina acest comportament, sa privim mai cu atentie esantionul Amen break. Daca cerem Sonic Pi sa ne spuna cat este de lung:
print sample_duration :loop_amen
Va afisa 1.753310657596372
care reprezinta lungimea esantionului in secunde. Sa rotunjim valoarea la ‘1.75’ pentru comoditate. Acum, daca setam valoarea pentru release la ‘0.75’, se va intampla un lucru surprinzator:
sample :loop_amen, release: 0.75
Va fi redata prima secunda a esantionului la amplitudine intreaga, apoi acesta se va stinge pe o durata de 0.75 secunde. Acest lucru arata cum functioneaza auto mentinerea. Implicit, valoarea pentru release se scade de la sfarsitul esantionului. Daca lungimea acestuia ar fi fost 10.75 secunde, ar fi fost redate primele 10 secunde la amplitudine intreaga apoi ar fi urmat stingerea pe o durata de 0.75s.
Tine minte: implicit, ‘release:’ actioneaza la sfarsitul esantionului.
Putem folosi ‘attack:’ si ‘release:’ impreuna cu auto mentinerea pentru a avea atat o intrare progresiva cat si o stingere treptata pentru esantion:
sample :loop_amen, attack: 0.75, release: 0.75
Cum durata completa a esantionului este de 1.75s si fazele de atac si eliberare impreuna au 1.5s, durata de mentinere este stabilita automat la 0.25s. Acest lucru ne ajuta sa realizam usor intrarea progresiva si stingerea treptata a esantionului.
Putem reveni cu usurinta la comportamentul ADSR normal pentru sintetizatoare atribuind explicit o valoare pentru ‘sustain:’, cum ar fi 0:
sample :loop_amen, sustain: 0, release: 0.75
Acum, esantionul nostru dureaza doar 0.75s in total. Cu valorile implicite pentru ‘attack:’ si ‘decay:’ egale cu 0, esantionul intra direct cu amplitudinea maxima, este mentinut astfel pentru 0s, apoi urmeaza coborarea la amplitudine 0 pe durata fazei de release - 0.75s.
Putem folosi acest comportament pentru a transforma esantioane lungi in versiuni mai scurte si mai percutante. Sa luam ca exemplu esantionul :drum_cymbal_open
:
sample :drum_cymbal_open
Poti auzi sunetul talerului continuand o anumita perioada de timp. Totusi, putem folosi anvelopa pentru a il face mai percutant:
sample :drum_cymbal_open, attack: 0.01, sustain: 0, release: 0.1
Poti simula lovirea unui taler si apoi amortizarea lui crescand durata de mentinere:
sample :drum_cymbal_open, attack: 0.01, sustain: 0.3, release: 0.1
Acum distreaza-te aplicand anvelope esantioanelor. Incearca sa schimbi si viteza de redare pentru efecte cu adevarat interesante.