Benvenuto in Sonic Pi. Probabilmente non vedi l’ora di cominciare a fare strani suoni almeno quanto io sono impaziente di mostrarti come si fa. Sarà un viaggio veramente divertente nel quale imparerai tutto su musica, sintesi, programmazione, composizione, performance e altro.
Un momento, non mi sono nemmeno presentato! Sono Sam Aaron - il tipo che ha realizzato Sonic Pi. Mi puoi trovare su Twitter @samaaron e mi farà molto piacere conoscerti. Magari ti interessa sapere qualcosa di più anche delle mie Live Coding Performances dove scrivo codice dal vivo con Sonic PI davanti al pubblico.
Se hai qualche suggerimento o idea per migliorare Sonic PI, mi raccomando, fammela sapere: il tuo feedback è un aiuto importante. Non si può mai sapere, la tua idea potrebbe essere la prossima “big feature”!
Questo tutorial è suddiviso in sezioni raggruppate in categorie. Anche se l’ho pensato per un apprendimento facile e progressivo dall’inizio alla fine, sentiti libero di passare da un argomento all’altro senza seguire necessariamente l’ordine del tutorial. Se pensi che manchi qualcosa, fammelo sapere e io prenderò in considerazione il tuo suggerimento per una prossima versione.
Infine, guardare gli altri che fanno live code è un ottimo sistema per imparare. Mi trovi spesso su livecoding.tv/samaaron quindi lasciami un messaggio e fammi tante domande :-)
Ok, possiamo cominciare…
Uno degli aspetti più divertenti di Sonic Pi è che ti permette di scrivere e modificare codice live per fare musica, proprio come se suonassi una chitarra dal vivo. Questo significa che dopo un po’ di pratica puoi salire sul palco ed esibirti con Sonic Pi.
Prima di entrare nel vivo del funzionamento di Sonic Pi, vorrei farti capire meglio cosa vuol dire live code. Per il momento non ti preoccupare se non capisci molto (o anche nulla) di quello che vedremo. Mettiti solo comodo e divertiti…
Allora cominciamo, copia il codice qui di seguito in uno dei workspace che trovi qui sopra:
live_loop :flibble do
sample :bd_haus, rate: 1
sleep 0.5
end
Ora premi il tasto Run
e sentirai un bel suono di cassa che batte il tempo. Per fermare il suono basta premere sul tasto Stop
. Però, per il momento, non premerlo ancora… Segui invece questi passaggi:
sleep
da 0.5
a qualcosa di più grande di 1
.Run
.Ok, fin qui era abbastanza semplice. Adesso aggiungi qualcos’altro al mix. Sopra sample :bd_haus
aggiungi l’istruzione sample :ambi_choir, rate: 0.3
. Il tuo codice dovrebbe apparire così:
live_loop :flibble do
sample :ambi_choir, rate: 0.3
sample :bd_haus, rate: 1
sleep 1
end
E adesso, sbizzarrisciti. Cambia il parametro rate:
- cosa succede se usi valori grandi, o piccoli, o negativi? Guarda cosa succede se cambi il valore di rate:
del campione :ambi_choir
anche di pochissimo (diciamo 0.29). E che succede se scegli un valore molto piccolo per sleep
? Guarda se riesci a farlo così veloce da provocare un errore perché il computer non riesce a stargli dietro. (Se succede, basta scegliere un valore di sleep
più grande e premere di nuovo Run
)
Prova a inserire all’inizio di una delle istruzioni sample
un #
:
live_loop :flibble do
sample :ambi_choir, rate: 0.3
# sample :bd_haus, rate: 1
sleep 1
end
Fai caso a come il #
dice al computer di ignorare quello che c’è scritto dopo, e di conseguenza non sentiamo più il campione. In Sonic Pi possiamo usare i commenti per togliere o reinserire elementi al mix.
Infine, ecco qualcosa di divertente con cui giocare. Prendi il codice qui sotto e copialo in un workspace vuoto. Poi, non cercare di capire altro, se non che ci sono due loop - due cose che suonano nello stesso tempo. Quindi, fai quello che sai fare meglio: provare e sperimentare. Ecco alcuni suggerimenti:
rate:
e ascolta il suono del campione che cambia.sleep
e senti come tutti e due i loop possono girare a differenti velocità.#
) e goditi il suono della chitarra al contrario.mix
con numeri che vanno da 0
(tutto fuori dal mix) a 1
(tutto nell mix).Ricordati di premere Run
e sentirai il cambiamento non appena il loop viene suonato di nuovo. Se fai qualche errore, non preoccuparti: premi stop
, cancelli il codice nel workspace, copi di nuovo il codice originale e sei pronto per ricominciare. Sbagliare è il modo più veloce per imparare.
live_loop :guit do
with_fx :echo, mix: 0.3, phase: 0.25 do
sample :guit_em9, rate: 0.5
end
# sample :guit_em9, rate: -0.5
sleep 8
end
live_loop :boom do
with_fx :reverb, room: 1 do
sample :bd_boom, amp: 10, rate: 1
end
sleep 8
end
Suona e fai esperimenti finché non avrai soddisfatto la tua curiosità su come funziona tutto questo e avrai cominciato a chiederti che altro ci puoi fare. A quel punto sei pronto per continuare a leggere il tutorial.
Allora, che aspetti?
Sonic Pi ha un’interfaccia molto semplice per programmare la musica. Diamogli un’occhiata.
Questi tasti rosa sono i controlli principali per far partire o fermare i suoni. Il tasto Run esegue il codice che hai scritto nell’editor, Stop per fermare tutto il codice in esecuzione, Save per salvare il codice in un file esterno e Record per registrare (in un file WAV) i suoni prodotti.
Questi tasti arancione ti permettono di modificare l’aspetto del codice nell’editor. I tasti Size + e Size - rendono il testo più grande o più piccolo. Il tasto Align mette in ordine il codice per renderlo più professionale.
Questi tasti blu ti danno accesso alle informazioni, all’help e alle opzioni. Il tasto Info apre la finestra delle informazioni che contiene le notizie su Sonic Pi, il team di sviluppo, la storia, i collaboratori e la community. Il tasto Help apre e chiude l’help (F) e il tasto Prefs apre e chiude la finestra delle opzioni che ti permette di modificare alcune impostazioni di base del programma.
Questa è l’area dove scriverai il tuo codice e comporrai/eseguirai la tua musica. E’ un semplice editor di testo dove puoi scrivere le tue istruzioni, cancellarle, copiarle e incollarle etc. Pensalo come una versione molto elementare di Word o Google Docs. L’editor cambia il colore delle parole sulla base del loro significato nel linguaggio. Questo all’inizio può sembrare strano, ma presto ti accorgerai che è molto utile. Per esempio, qualunque testo colorato di blu è sicuramente un numero.
Attraverso il tasto prefs nel gruppo di tasti Info e Help, puoi accedere alle opzioni di configurazione di Sonic Pi. Il tasto di permette di aprire e chiudere la finestra delle preferenze che possono essere modificate. Per esempio, forzare la modalità mono, invertire i canali stereo, modificare il livello di dettaglio dei messaggi di log e anche un cursore per il livello del suono in uscita e un selettore audio se stai usando un Raspberry Pi.
Quando i tuoi programmi girano, le informazioni su cosa stiano facendo vengono visualizzate nella finestra di Log. Per default, noterai che c’è un messaggio per ogni suono che generi e che riporta il tempo esatto in cui il suono viene prodotto. Vedrai che questo ti sarà molto utile quando dovrai fare il debug (individuare gli errori) del tuo codice o capire cosa sta facendo il tuo programma.
Infine, una delle parti più importanti dell’interfaccia di Sonic Pi è l’Help che appare in basso nella finestra del programma. Puoi attivarlo o disattivarlo usando il tasto Help. Il sistema di Help contiene la documentazione e le informazioni su tutti gli aspetti di Sonic Pi compreso questo tutorial, una lista dei sintetizzatori e dei campioni disponibili, esempi, effetti (FX) ed una lista completa di tutte le funzioni e le istruzioni disponibili nel linguaggio di Sonic Pi.
Sonic PI ti incoraggia ad imparare sia l’informatica che la musica suonando e sperimentando. La cosa più importante è che, mentre ti diverti, senza accorgertene impari a programmare, a comporre e a esibirti..
Già che ne stiamo parlando, permettimi di darti una dritta che ho imparato in anni di live coding in musica: non esistono errori, ma solo opportunità. È una cosa che ho spesso sentito dire a proposito del jazz, ma funziona altrettanto bene con il live coding. Non importa quanto tu sia esperto - un principiante o un Algoraver navigato: ti capiterà sempre di eseguire del codice dal risultato completamente inaspettato. Potrebbe suonare maledettamente bene, e allora vai tranquillo. Ma potrebbe suonare anche totalmente cacofonico e sballato. Non è importante quello che è venuto fuori, ma quello che ci farai subito dopo. Prendi il suono, manipolalo e modellalo fino a farlo diventare qualcosa di spettacolare. Il pubblico impazzirà.
Mentre si sta imparando, si è tentati di fare subito cose straordinarie. Metti da parte questo obiettivo e consideralo come qualcosa da raggiungere più in là. Per adesso, pensa piuttosto che la cosa più semplice che potresti scrivere con divertimento e soddisfazione è un piccolo passo verso ciò che hai in mente. Una volta che hai un’idea su quel piccolo passo, prova a realizzarlo, suonalo e vedi quali nuove idee ti suggerisce. Sarai ben presto troppo occupato a divertirti e a fare progressi concreti.
Accertati sempre di condividere il tuo lavoro con gli altri!
OK, di introduzione ne abbiamo abbastanza - cominciamo a fare qualche suono.
In questa parte vedremo le basi del’utilizzo dei synth. Synth è un’abbreviazione di synthesizer (sintetizzatore) che è una strana parola che serve ad indicare un generatore di suoni. Di solito i synth sono abbastanza complicati da usare - specialmente quelli analogici che hanno molti cavi di collegamento e moduli. Sonic Pi, invece, ti dà molte di quelle potenzialità in modo semplice e intuitivo.
Non farti ingannare dall’apparente semplicità dell’interfaccia di Sonic Pi. Potrai arrivare a padroneggiare tecniche molto potenti di manipolazione del suono, se non ti mancherà la passione. Reggiti forte alla sedia…
Dai un’occhiata a questa istruzione:
play 70
È da qui che comincia tutto. Copiala e incollala nella finestra del codice in alto (il grande spazio bianco sotto il tasto Run). Ora, premi Run…
Forte. Premilo ancora. E ancora. E ancora…
Wow, pazzesco, sono sicuro che potresti continuare così per tutto il giorno. Ma aspetta, prima di perderti in un flusso infinito di beep, prova a cambiare il numero:
play 75
Senti la differenza? Prova con un numero più piccolo:
play 60
Quindi, numeri più piccoli producono suoni più gravi e numeri più grandi producono suoni più acuti. Proprio come sulla tastiera di un pianoforte, i tasti della parte più bassa (quella della mano sinistra) suonano note più gravi e i tasti della parte più alta (quella della mano destra) suonano note più acute.
Infatti, i numeri fanno riferimento proprio alle note del pianoforte, considerando che al primo tasto a sinistra corrisponde il numero 21. Quindi play 47
vuol dire suona la 26esima nota del pianoforte. Il che significa che play 48
suona una nota sopra (la nota successiva verso destra). Per esempio, il Do (C, nella notazione inglese) della quarta ottava è il numero 60. Prova a farlo suonare play 60
.
Non ti preoccupare se ti sembra che non abbia alcun senso: nemmeno per me lo aveva quando ho cominciato. Tutto quello che ti serve di sapere per ora è che numeri piccoli fanno beep più gravi e numeri grandi fanno beep più acuti.
Suonare una nota è divertente, ma suonarne tante contemporaneamente può esserlo anche di più. Prova:
play 72
play 75
play 79
Forte! Quindi, quando scrivi tanti play
, suonano tutti contemporaneamente. Prova da solo: quali numeri suonano bene insieme? Quali invece stridono? Sperimenta, esplora e scopri da solo.
Quindi, suonare note e accordi è divertente, ma che ne dici di provare con una melodia? Ovvero, come si fa a far suonare una nota dopo l’altra e non tutte insieme? Beh, è facile, basta fare una sosta (sleep
) tra le note:
play 72
sleep 1
play 75
sleep 1
play 79
Che bello, un piccolo arpeggio. Ma che significa quell’ 1
in sleep 1
? Quel numero indica la durata dello sleep. Vuol dire “aspetta per un beat”, ma per il momento pensiamo che significhi uno stop di un secondo. E se invece volessimo suonare il nostro arpeggio un po’ più velocemente? Basta usare valori più piccoli per l’istruzione sleep
. Che ne dici della metà, 0.5
?
play 72
sleep 0.5
play 75
sleep 0.5
play 79
Hai notato che suona più veloce? Ora prova, da solo, a cambiare note e tempi.
Una cosa che puoi provare sono i valori intermedi per le note, come play 52.3
oppure play 52.63
. Non c’è nessun bisogno, infatti, di limitarsi ai valori interi delle note. Divertiti a provare da solo.
(N.d.T. in inglese le note si chiamano con le lettere dell’alfabeto e cominciano dal La invece che dal Do. Quindi A = La, B = Si, C = Do, D = Re, E = Mi, F = Fa, G = Sol.) Se già conosci un po’ di notazione musicale (se non la conosci non ti preoccupare, per il momento non è necessaria per divertirsi) potresti voler scrivere una melodia usando i nomi delle note come C e F# invece dei numeri. Sonic Pi ha pensato anche a questo. Puoi fare così:
play :C
sleep 0.5
play :D
sleep 0.5
play :E
Non dimenticare i due punti :
prima del nome della nota in modo che diventi rosa. Puoi anche specificare l’ottava indicando un numero dopo il nome della nota:
play :C3
sleep 0.5
play :D3
sleep 0.5
play :E4
Se ti serve una nota col diesis (in inglese sharp), aggiungi una s
dopo il nome della nota come in play :Fs3
o se ti serve col bemolle (in inglese flat) aggiungi una b
come in play :Eb3
.
Ora puoi sbizzarrirti a far suonare note, accordi e melodie.
Oltre a permetterti di controllare quale nota o quale campione suonare, Sonic Pi fornisce un insieme completo di parametri per inventare e controllare il suono. Ne incontreremo molti in questo tutorial e puoi trovare una trattazione completa nell’help. Per il momento, però, ne introdurremo due tra i più utili: ampiezza e bilanciamento (in inglese amplitude e pan). Prima di tutto diamo un’occhiata a cosa sono effettivamente i parametri.
Sonic Pi usa il concetto di parametro per i suoi synth. I parametri sono quantità che vengono passati all’istruzione play
e che controllano e modificano caratteristiche del suono che ascolti. Ogni synth ha il suo gruppo di parametri per controllare in modo dettagliato il suono generato, ma comunque molti synth hanno in comune alcuni parametri come per esempio amp:
e quelli che riguardano l’inviluppo (trattati in un paragrafo successivo).
I parametri hanno due parti, il nome (ovvero il nome del controllo) e il valore (il valore a cui vuoi impostare il controllo). Per esempio, potresti avere un parametro che si chiama cheese:
e volerlo impostare al valore 1
.
I parametri sono passati alle istruzioni play
usando una virgola ,
seguita dal nome del parametro, per esempio amp:
(non dimenticare i due punti :
) e quindi da uno spazio e dal valore del parametro. Per esempio:
play 50, cheese: 1
(Nota bene che cheese:
non è un parametro valido, è solo per fare un esempio).
Puoi passare più parametri in una volta separandoli con una virgola:
play 50, cheese: 1, beans: 0.5
L’ordine dei parametri non conta, quindi questa istruzione ha lo stesso effetto di quella precedente:
play 50, beans: 0.5, cheese: 1
I parametri che non sono riconosciuti dal synth vengono ignorati (come cheese
e beans
che sono ovviamente nomi assurdi per dei parametri!)
Se per sbaglio usi lo stesso parametro due volte con diversi valori, l’ultimo vince. Per esempio beans
in questa istruzione avrà il valore 2 invece di 0.5:
play 50, beans: 0.5, cheese: 3, eggs: 0.1, beans: 2
Molte cose in Sonic Pi accettano parametri, quindi passa un po’ di tempo a capire come usarli e sarai pronto! Giochiamo un po’ con il nostro primo parametro amp:
L’ampiezza è una rappresentazione digitale del volume di un suono. Un’ampiezza elevata produce un suono forte mentre un valore basso di ampiezza produce un suono debole. Come Sonic Pi usa numeri per rappresentare il tempo e le note, allo stesso modo usa numeri per rappresentare anche l’ampiezza. Un’ampiezza di valore 0 equivale al silenzio (non si sentirà nulla) mentre un’ampiezza di valore 1 equivale al volume normale. Puoi anche forzare l’ampiezza a valori più alti (2, 10, 100), ma vedrai che quando l’ampiezza complessiva di tutti i suoni diventa troppo alta, Sonic Pi usa il cosiddetto compressore per riportarla di nuovo a valori tali da non risultare troppo alti per le orecchie. Ciò può rendere il suono confuso e strano. Perciò prova ad usare ampiezze basse, diciamo tra 0 e 0.5, per evitare la compressione.
Per cambiare l’ampiezza di un suono, puoi usare il parametro amp:
. Ad esempio, per suonare a metà ampiezza, dai un valore di 0.5:
~~~~
play 60, amp: 0.5
~~~~
Per suonare ad ampiezza doppia, dai un valore di 2
play 60, amp: 2
Il parametro amp:
modifica soltanto la chiamata a play
a cui è associato. Così, ad esempio, la prima chiamata a play
è a metà volume, mentre la seconda è di nuovo sul valore di default:
play 60, amp: 0.5
sleep 0.5
play 65
Naturalmente puoi usare differenti valori per amp:
per ogni play:
play 50, amp: 0.1
sleep 0.25
play 55, amp: 0.2
sleep 0.25
play 57, amp: 0.4
sleep 0.25
play 62, amp: 1
Un altro parametro divertente è pan:
, che controlla la collocazione del suono (panning) sul fronte stereofonico. In Sonic Pi usiamo un -1 per posizionare il suono tutto a sinistra, 0 per posizionare il suono al centro e 1 per posizionare il suono tutto a destra.
Facciamo suonare un beep dall’altoparlante a sinistra:
play 60, pan: -1
Ora, dall’altoparlante a destra:
play 60, pan: 1
Infine, facciamolo suonare al centro (che è la posizione di default):
play 60, pan: 0
E adesso divertiti a cambiare le ampiezze e il panning dei tuoi suoni!
Finora ci siamo divertiti un sacco con i beep. Ma probabilmente questi semplici beep staranno cominciando ad annoiarti. È tutto qui quello che Sonic Pi ha da offrire? Ci sarà qualcosa di più nel live coding che suonare dei beep! Certo che c’è, e in questa sezione esploriamo la vasta gamma di suoni che offre Sonic Pi.
Sonic Pi offre una ampia gamma di strumenti chiamati synth, forma abbreviata per sintetizzatori. Mentre i sample contengono suoni pre-registrati, i synth sono in grado di generare nuovi suoni in base a come li controlli (cosa che esploreremo più in là nel tutorial). I synth di Sonic Pi sono molto potenti ed espressivi e ti divertirai molto nell’esplorarne le possibilità e nel suonarli. Per prima cosa, impariamo a selezionare il synth da suonare.
Un suono divertente è il dente di sega. Proviamolo:
use_synth :saw
play 38
sleep 0.25
play 50
sleep 0.25
play 62
sleep 0.25
Adesso proviamo un altro suono - il prophet:
use_synth :prophet
play 38
sleep 0.25
play 50
sleep 0.25
play 62
sleep 0.25
E se combinassimo insieme due suoni? Prima uno dietro l’altro:
use_synth :saw
play 38
sleep 0.25
play 50
sleep 0.25
use_synth :prophet
play 57
sleep 0.25
Ora, tutti insieme
use_synth :tb303
play 38
sleep 0.25
use_synth :dsaw
play 50
sleep 0.25
use_synth :prophet
play 57
sleep 0.25
Nota che il comando use_synth
influenza soltanto le chiamate seguenti a play
. Pensalo come un grande switch - le nuove chiamate a play
useranno qualsiasi sintetizzatore sia in uso in quel momento. Puoi regolare lo switch su un nuovo synth con l’istruzione use_synth
.
Per vedere quali sintetizzatori Sonic Pi mette a tua disposizione, dai un’occhiata all’opzione Synths (prima di Fx) nel menu verticale in basso a sinistra. Ce ne sono più di 20 tra cui scegliere. Ecco qui sotto soltanto alcuni dei miei preferiti:
:prophet
:dsaw
:fm
:tb303
:pulse
Ora divertiti a cambiare i synth mentre fai la tua musica. Divertiti a combinare i synth per fare nuovi suoni e ad usare synth differenti in diverse sezioni della tua musica.
Nelle sezioni precedenti, abbiamo visto come usare il comando sleep
per controllare l’attacco della nota, ma non siamo ancora in grado di controllare la durata dei suoni.
Per dotarci di uno strumento semplice ma potente per controllare le durate dei suoni, Sonic Pi implementa il concetto di inviluppo ADSR (ci occuperemo più oltre in questa stessa sezione di cosa voglia dire ADSR). Un inviluppo di ampiezza permette di gestire due utili aspetti del controllo: * controllo della durata di un suono * controllo dell’ampiezza
La durata è il tempo che un suono…dura! Una durata più lunga significa che sentirai il suono per un tempo più lungo. Tutti i suoni in Sonic Pi hanno un inviluppo di ampiezza controllabile, e la durata di tale inviluppo corrisponde alla durata del suono. Quindi, controllando l’inviluppo, controlli allo stesso tempo la durata.
L’inviluppo ADSR non controlla soltanto la durata, ma fornisce anche un controllo accurato dell’ampiezza del suono. Tutti i suoni udibili iniziano dal silenzio e finiscono nel silenzio, e contengono una parte non-silenziosa nel mezzo. Gli inviluppi ti permettono di variare e mantenere l’ampiezza della parte non-silenziosa del suono. È come dare a qualcuno istruzioni su come e quanto alzare e abbassare il volume dell’amplificatore della chitarra. Per esempio, potresti chiedere a questa persona di iniziare dal silenzio, alzare il volume lentamente fino al massimo, mantenerlo per un po’ e riabbassarlo di colpo. Sonic Pi ti permette di controllare con precisione questo tipo di comportamento mediante gli inviluppi.
Tanto per riassumere: come abbiamo visto prima, una ampiezza di 0 equivale a silenzio e un’ampiezza 1 è il volume normale (cioè il volume massimo che il computer può esprimere senza distorcere il segnale).. Ora, diamo un’occhiata alle parti da cui l’inviluppo è composto.
L’unica parte dell’inviluppo che viene usata di default è il rilascio (release). Si tratta del tempo che il suono di un synth impiega a dissolvere. Tutti i synth hanno un tempo di rilascio impostato a 1, il che vuol dire che, di default, hanno la durata di 1 beat (che a sua volta, al tempo di default di 60BPM, equivale a 1 secondo):
play 70
La nota resterà udibile per 1 secondo. Prova a verificare tu stesso. Questa era la forma breve in luogo di quella più lunga ed esplicita:
play 70, release: 1
Nota come il suono abbia esattamente la stessa durata di prima (il suono dura un secondo). Ma ora è molto facile cambiare la durata modificando il valore dell’opzione release:
play 60, release: 2
Possiamo anche far suonare il synth per una durata molto breve usando un valore molto piccolo del tempo di rilascio:
play 60, release: 0.2
La durata del rilascio di un suono è chiamata fase di rilascio e, di default, è una transizione lineare (cioè segue una linea retta), Il seguente diagramma illustra questa transizione:
La linea verticale sulla sinistra del diagramma indica che il suono comincia ad ampiezza 0, ma sale ad ampiezza massima immediatamente (questa è la fase di attacco, di cui ci occuperemo dopo). Raggiunta l’ampiezza massima, scende con una linea diritta fino a zero, e per fare questo impiega esattamente il tempo specificato da release:
. Valori di release più lunghi producono dissolvenze più lente.
Ora poi cambiare la durata dei suoni cambiando il tempo di rilascio. Divertiti ad aggiungere i tempi di rilascio alle note della tua musica.
Di default, la fase d’attacco è 0 per tutti i synth, il che significa che questi salgono da ampiezza 0 a 1 immediatamente. Ciò conferisce ai synth un timbro percussivo. Tuttavia, potresti volere che il suono raggiunga l’ampiezza 1 più lentamente (fade in). Puoi ottenere questo risultato con l’opzione attack:
play 60, attack: 2
sleep 3
play 65, attack: 0.5
Puoi usare opzioni multiple contemporaneamente. Per esempio, per un attacco corto e un rilascio lungo, prova così:
play 60, attack: 0.7, release: 4
Un inviluppo con attacco corto e rilascio lungo è illustrato nel diagramma seguente:
È ovvio che puoi fare anche l’inverso. Prova un attacco lungo e un rilascio corto:
play 60, attack: 4, release: 0.7
Infine, puoi anche impostare un tempo corto sia per l’attacco che per il rilascio, per avere suoni più brevi:
play 60, attack: 0.5, release: 0.5
Oltre ai tempi di attacco e rilascio, puoi specificare anche un tempo di sostegno (sustain) per controllare la fase di sostegno. Essa corrisponde al tempo in cui il suono è mantenuto ad ampiezza fissa dopo l’attacco e prima del rilascio:
play 60, attack: 0.3, sustain: 1, release: 1
Il tempo di sostegno è utile per suoni a cui vuoi dare maggior presenza nel mix prima di inserire una fase, opzionale, di rilascio. Naturalmente, è del tutto valido anche impostare sia l’attacco che il rilascio a 0 per non avere alcun tipo di dissolvenza né in entrata né in uscita. Bada però che un tempo di rilascio uguale a 0 genera dei click, ed è meglio usare valori molto piccoli come 0.2.
## Fase di decadimento (Decay)
Per un ulteriore livello di controllo, puoi specificare anche un tempo di decadimento. Si tratta di una fase dell’inviluppo che si trova tra attacco e sostegno e specifica il tempo in cui l’ampiezza cade da attack_level:
(livello d’attacco) a decay_level:
(livello di decadimento). Di default, l’opzione decay:
ha valore 0 e sia il livello di attacco che il livello di sostegno sono impostati su 1, e ciò significa che dovrai impostarne il valore in modo esplicito se vuoi che il tempo di decadimento sortisca qualche effetto:
play 60, attack: 0.1, attack_level: 1, decay: 0.2, sustain_level: 0.4, sustain: 1, release: 0.5
Un’altra possibilità è impostare esplicitamente i valori di decay_level:
e sustain_level:
(anche se di default sono uguali) per avere pieno controllo sull’inviluppo. Ciò consente di creare inviluppi nel modo seguente:
~~~~
play 60, attack: 0.1, attack_level: 1, decay: 0.2, decay_level: 0.3, sustain: 1, sustain_level: 0.4, release: 0.5
~~~~
È possibile anche impostare un decay_level:
più alto del 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
~~~~
Riassumendo, gli inviluppi di Sonic Pi hanno le seguenti fasi:
attack_level
,attack_level
a decay_level
,decay_level
a sustain_level
,sustain_level
a 0È importante sottolineare che la durata di un suono è pari alla somma dei tempi di ciascuna di queste quattro fasi. Quindi, il suono seguente avrà una durata pari a 0.5 + 1 + 2 + 0.5 beat:
play 60, attack: 0.5, attack_level: 1, decay: 1, sustain_level: 0.4, sustain: 2, release: 0.5
E adesso datti da fare ad aggiungere gli inviluppi ai tuoi suoni…