È possibile anche modificare la durata e l’ampiezza di un campione adoperando un inviluppo ADSR. Questo funziona però in modo lievemente differente dall’ADSR disponibile nei synth. Gli inviluppi dei campioni ti permettono soltanto di ridurre l’ampiezza e la durata di un campione, ma mai di aumentarle. Il campione si fermerà o quando sarà stato suonato tutto oppure quando sarà completato l’inviluppo, quale delle due cose accada per prima. Quindi, anche se usi un tempo di rilascio (release:
) molto lungo, non per questo aumenterai la durata del campione.
Torniamo al nostro amico fidato, il loop di batteria Amen:
sample :loop_amen
Senza parametri, ascoltiamo il campione intero ad ampiezza piena. Se vogliamo creare un fade-in (dissolvenza in entrata) di 1 secondo, possiamo usare il parametro attack:
(tempo di attacco):
sample :loop_amen, attack: 1
Per un fade-in più corto, impostiamo un tempo di attacco più corto:
sample :loop_amen, attack: 0.3
La fase dell’inviluppo in cui il comportamento dell’ADSR differisce, per i campioni, da quello standard dei synth, è il tempo di sustain:
(sostegno). Negli inviluppi standard dei synth, esso è impostato di default su 0 a meno che non venga impostato manualmente su un valore diverso. Con i campioni, il sustain si imposta su un valore automagico, cioè il tempo necessario ad eseguire il resto del campione. Ecco perché sentiamo l’intero campione quando non impostiamo alcun valore. Se attacco, decadimento, sostegno e rilascio fossero tutti impostati su 0, non sentiremmo un bel niente. Sonic Pi calcola perciò la lunghezza del campione, ne sottrae eventuali tempi di attacco, decadimento e rilascio, e usa il risultato come tempo di sostegno. Se attacco, decadimento e rilascio sommati durano più della durata effettiva del campione, il sustain è lasciato, semplicemente, a 0.
Per esaminare questo aspetto, consideriamo il nostro loop Amen più in dettaglio. Se chiediamo a Sonic Pi quanto dura il campione:
print sample_duration :loop_amen
lui stamperà 1.753310657596372
, che è la lunghezza del campione in secondi. Per comodità, arrotondiamolo a 1.75
. Adesso, se impostiamo il rilascio a 0.75
, ecco cosa accade:
sample :loop_amen, release: 0.75
Suonerà il primo secondo del campione ad ampiezza piena prima di dissolvere in un tempo di 0.75 secondi. Ecco l’autosustain in azione. Di default, il rilascio funziona sempre contando a ritroso dalla fine del campione. Se il nostro campione fosse di 10.75 secondi, suonerebbe i primi 10 secondi ad ampiezza piena prima di dissolvere in 0.75 secondi.
Ricorda: di default il tempo di rilascio va contato dalla fine del campione.
Possiamo usare insieme sia attack:
che release:
con l’autosustain per avere sia il fade in che il fade out sulla durata del campione:
sample :loop_amen, attack: 0.75, release: 0.75
Dal momento che la durata completa del campione è 1.75 secondi e i nostri tempi di attacco e rilascio durano complessivamente 1.5 secondi, il sustain è impostato automaticamente a 0.25 secondi. Ciò permette di applicare le dissolvenze al campione con grande facilità.
Possiamo benissimo tornare al comportamento normale dell’ADSR dei synth impostando sustain:
manualmente su un valore, ad esempio 0:
sample :loop_amen, sustain: 0, release: 0.75
Adesso il nostro campione suona per soli 0.75 secondi totali. Con il valore di default 0 per attack:
e decay:
, il campione va immediatamente alla massima ampiezza, tiene il suono per…0 secondi e poi se ne va ad ampiezza 0 con un tempo di rilascio di 0.75 secondi.
Possiamo servirci di questo comportamento come effetto per trasformare campioni lunghi in versioni corte e più percussive dello stesso campione. Consideriamo il campione :drum_cymbal_open
:
sample :drum_cymbal_open
Puoi sentire il suono del piatto riusuonare per un certo tempo. Tuttavia, possiamo usare il nostro inviluppo per rendere il suono più percussivo:
sample :drum_cymbal_open, attack: 0.01, sustain: 0, release: 0.1
Puoi emulare il colpo di piatto e il successivo smorzamento aumentando il tempo di sostegno:
sample :drum_cymbal_open, attack: 0.01, sustain: 0.3, release: 0.1
E adesso divertiti ad applicare gli inviluppi ai campioni. Prova a cambiare anche la velocità di lettura per risultati davvero interessanti.