I primi suoni con Sonic Pi
Iniziamo a creare i primi semplici suoni con Sonic Pi.
- Per lanciare Sonic Pi, fai click sull’icona che trovi sulla scrivania. Si aprirà una schermata come la seguente:
La parte centrale è dedicata all’inserimento del testo, e cioè alla scrittura del codice, mentre la finestra alla sua destra c’è il pannello di controllo, in cui vengono mostrate le informazioni relative al comportamento del programma mentre lo si sta usando.Se fai click sul pulsante di aiuto, nella parte inferiore della schermata appare una finestra dalla quale si può accedere alla documentazione di supporto. Qui puoi trovare le informazioni relative ai differenti tipi di codice che si possono utilizzare in Sonic Pi, ai sintetizzatori, ai campioni musicali e a molto altro ancora.
I sintetizzatori sono gli strumenti che danno voce al codice: fanno cioè in modo che un codice produca uno specifico suono. Due sintetizzatori diversi creano due suoni diversi a partire dallo stesso codice.
I campioni sono suoni preregistrati o melodie che puoi usare direttamente per scrivere il tuo codice.
- Per creare il primo suono, seleziona l’etichetta Buffer 1 e digita questa riga di codice:
play 60
Buffer 1 indica una pagina sulla quale puoi scrivere il codice. Ne hai a disposizione 10, numerate da 0 a 9.
- Fai click sull’icona play che trovi in cima alla schermata. Cosa succede?Il computer riproduce il suono!Sonic Pi legge la riga di codice
play 60
e produce il suono che hai appena sentito.play
è un’istruzione, una parola che il programma riconosce ed associa ad un’azione che viene eseguita di conseguenza. Puoi scoprire la lista completa delle istruzioni a disposizione in Sonic Pi nella sezione Lang della finestra di aiuto.Il valore numerico che hai digitato dopo la parola
play
rappresenta invece una nota musicale.La riga di codice che hai scritto dice quindi a Sonic Pi di eseguire il comando
play
alla nota60
… in pratica dice a Sonic Pi: suona la nota60
!Ma di che tipo di nota musicale si tratta?
Di una nota numerica. Nel mondo del computer viene chiamata nota MIDI. Le note MIDI corrispondono alle note musicali standard. Sono semplicemente scritte in un modo che il computer è in grado di leggere.
- Cosa succede se invece digiti
pley 60
and fai click su play?Visualizzerai un messaggio di errore! Questo succede perché la parolapley
non è riconosciuta da Sonic Pi. Ogni volta che vedrai apparire questo messaggio, o uno simile, saprai che hai bisogno di correggere qualcosa nella scrittura del tuo codice.E’ possibile che l’errore sia estremamente banale: potresti, come in questo caso, aver semplicemente sbagliato a scrivere la parolaplay
! - Ora prova a scrivere questa riga di codice:
play 60 play 67 play 69
- E fai click su play. Cosa succede?
- Il computer inizierà a suonare le note in sequenza (una dopo l’altra), ma in un modo talmente rapido che ti sembrerà di udire un solo suono.Come si fa a far suonare una nota dopo l’altra e non tutte insieme?Basta dire a Sonic Pi di fare una pausa fra una nota e l’altra. Come?Bisogna aggiungere dopo ciascun
play
il codice:sleep 1
sleep
è un’altra istruzione: dice a Sonic Pi di fermarsi.Il valore numerico inserito dopo la parola
sleep
rappresenta il tempo in secondi. Il valore 1 rappresenta un secondo. Se quindi vuoi che l’intervallo sia di mezzo secondo, devi usare il valore 0.5.Il codice:
sleep 1
dice quindi a Sonic Pi: fai una pausa di un secondo!
- Utilizzando una sequenza di play e sleep possiamo comporre una melodia!
Facciamo un esempio:
- Seleziona Buffer 2.
- Digita il codice:
play 60 sleep 0.5 play 62 sleep 0.5 play 64 sleep 0.5 play 60 sleep 0.5
- E fai click su play.Il computer inizierà a suonare la prima sezione della melodia di Fra martino!Possiamo ripeterla due volte di fila senza riscrivere lo stesso codice? Certo.Basta inserire un codice che dica al programma di farlo. Quale?
- In cima al codice che hai scritto, sopra il primo
play 60
, digita:2.times do
- E alla fine del codice che hai scritto, sotto l’ultimo
sleep 0.5
, digita:end
Il codice finale sarà:
2.times do play 60 sleep 0.5 play 62 sleep 0.5 play 64 sleep 0.5 play 60 sleep 0.5 end
- Fai click su play. Cosa succede?La melodia viene ripetuta due volte!Il codice che hai scritto dice infatti a Sonic Pi di ripetere due volte tutto quanto è compreso fra
do
eend
.Nota che alcune linee di codice sono state fatte rientrare. Non cambia nulla nella sostanza. E’ solo un trucco che serve a rendere più leggibile il codice, e quindi a permetterti di localizzare più facilmente gli eventuali errori… nel caso nel caso tu ne abbia fatti.Per far rientrare una linea di codice, premi due volte la barra spaziatrice.
Possiamo fare in modo che la melodia si ripeta indefinitamente? Sì
Ti basta scrivere
loop
do
eend
al posto di2.times do
eend
, in questo modo:loop do play 60 sleep 0.5 end
Questo codice dice a Sonic Pi di mettere in loop tutto quanto è compreso fra
do
eend
.Mettere in loop vuol dire ripetere di continuo: la nota 60 viene ripetuta di continuo con un intervallo di mezzo secondo fra due note successive.
Note midi e note musicali
Se conosci le note standard di una melodia suonata al pianoforte, potresti tradurle in note numeriche usando questa tabella
C | D | E | F | G | A | B |
---|---|---|---|---|---|---|
60 | 62 | 64 | 65 | 67 | 69 | 71 |
DO | RE | MI | FA | SOL | LA | SI |
Sarebbe però un processo lungo… quindi abbiamo deciso di farlo per te! In Sonic Pi puoi infatti usare direttamente anche la notazione musicale standard! Stai attento però! La notazione standard che abbiamo usato è quella inglese!
- Digita in un nuovo buffer:
play :c4 sleep 0.5 play :d4 sleep 0.5 play :e4 sleep 0.5 play :c4 sleep 0.5
- Fai click su play per ascoltare la melodia.Come vedi, è sempre l’inizio di Fra Martino…
Modificare i suoni
E’ ora di rendere la tua melodia più interessante!
Puoi farlo cambiando il sintetizzatore che Sonic Pi usa per leggere il codice.
Il sintetizzatore che Sonic Pi usa di default si chiama beep
.
Per usarne uno differente, devi specificarne il nome, aggiungendo il codice use_synth :name of synth
prima della sequenza in cui vuoi che venga utilizzato.
In questo esempio, usiamo il sintetizzatore fm
:
use_synth :fm
2. times do
play 60
sleep 0.5
play 67
sleep 0.5
end
Il codice che hai scritto dice a Sonic Pi di usare il sintetizzatore fm
per ripetere due volte tutto quanto è compreso fra do
e end
.
Sonic Pi include molti sintetizzatori. Per trovarne i nomi, fai click sull’icona aiuto, e quindi sull’etichetta sintetizzatori. Fai quindi click sul nome di uno specifico sintetizzatore per avere maggiori informazioni su come usarlo.
Usare i campioni
Sonic Pi ti permette di creare musica anche utilizzando campioni musicali.
Per usare un campione, devi aggiungere il codice sample :name of sample
nel punto del tuo programma musicale in cui vuoi che venga suonato.
In questo esempio, il nome del campione è loop_amen
:
2.times do
sample :loop_amen
sleep 1.753
end
Sonic Pi include molti campioni. Per trovarne i nomi, fai click sull’icona aiuto, e quindi sull’etichetta campioni. Fai quindi click sul nome di uno specifico campione per avere maggiori informazioni su come usarlo.
Suonare due melodie contemporaneamente
Le canzoni sono spesso composte da una base musicale che si ripete, sulla quale viene suonata una certa melodia.
Per il momento hai imparato a scrivere il codice per suonare una sola melodia. Proviamo ora a suonarne due allo stesso tempo!
- Fai click sull’etichetta di un nuovo buffer.
- Il codice che usiamo per suonare due melodie allo stesso tempo deve essere inserito fra
in_thread do
eend
. - Dopo
in_thread do
, digita il codice della melodia che vuoi usare come base musicale. In questo esempio ho usato il campioneloop_amen
:in_thread do loop do sample :loop_amen sleep 1.753 end end
Scrivi ora in modo analogo il codice per la tua melodia.
- Digita:
in_thread do 16.times do play 75 sleep 1.753 play 74 sleep 0.25 end end
E premi play.
Dovresti sentire la melodia e la base musicale allo stesso tempo.
Codice dal vivo!
Sonic Pi è stato sviluppato per essere usato dal vivo.
Infatti Il codice può essere cambiato e adattato in tempo reale, ossia mentre il computer sta suonando quello che hai già scritto. Come si fa?
- Digita in un nuovo buffer:
define :play_my_synth do use_synth :prophet play 50, attack: 0.2, release: 1.3 sleep 0.5 end loop do play_my_synth end
- Premi play.
- Mentre la melodia sta suonando, aggiungi il simbolo
#
all’inizio delle ultime tre righe di codice:# loop do # play_my_synth # end
- Ora prova a cambiare una parte del codice mentre la melodia continua a suonare, e premi play un’altra volta.Cosa è successo? La melodia è stata cambiata senza mai interrompersi!
E dopo?
Sonic Pi offre molte più funzionalità di quelle che abbiamo visto. Se le vuoi scoprire, vai al prossimo tutorial.

This learning resource is provided for free by the Raspberry Pi Foundation under a Creative Commons licence.
Find more at raspberrypi.org/resources and github.com/raspberrypilearning.