Sonic Pi – Sintetizzatori

 

2 Synth (Sintetizzatori)

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…

 

2.1 I tuoi primi Beep

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…

Beep!

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.

Accordi

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.

Melodia

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.

Nomi letterali delle note

(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.

 

2.2 Paramentri dei Synth: Amp e Pan

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.

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:

Ampiezza

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.

Amp-lificato…!

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

Panning

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!

 

2.3 Muoversi fra i Synth

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.

Synth

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.

Denti di sega e profeti

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.

Alla scoperta dei 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.

 

2.4 Durate e inviluppi

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

Durata

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.

Ampiezza

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.

Fase di rilascio (Release)

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:

env-release

release envelope

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.

Fase d’attacco

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:

env-attack-release

È ovvio che puoi fare anche l’inverso. Prova un attacco lungo e un rilascio corto:

play 60, attack: 4, release: 0.7

env-long-attack-short-release

long attack short release envelope

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

env-short-attack-short-release

short attack short release envelope

Fase di sostegno (Sustain)

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

env-attack-sustain-release

ASR envelope

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

env-attack-decay-sustain-release

ADSR envelope

Livello di decadimento

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

env-decay-level

ASR envelope

È 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

env-decay-level-2

ASR envelope

ADSR Envelopes

Riassumendo, gli inviluppi di Sonic Pi hanno le seguenti fasi:

  1. tempo di attacco per transitare da ampiezza 0 a attack_level,
  2. tempo di decadimento per transitare da attack_level a decay_level,
  3. tempo di sostegno per transitare da decay_level a sustain_level,
  4. tempo di rilascio per transitare da 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…

 

immagini dai lab

La capacità di apprezzare non si acquisisce attraverso la contemplazione passiva: noi apprezziamo la bellezza soltanto sulla base delle nostre aspirazioni creative, per quanto non riuscite possano essere. (H. Read)