Liste

In questa sezione analizzeremo come funziona una lista come struttura di dati. Ne abbiamo accennato in precedenza nella sezione relativa alla casualità quando abbiamo scelto di suonare una nota in modo casuale da una lista:

play choose([50, 55, 62])

In questa sezione esploreremo come utilizzare le liste per accordi e scale. Prima ripassiamo come possiamo suonare un accordo: ricordi che se non usiamo sleep, tutti i suoni vengono riprodotti in contemporanea:

play 52
play 55
play 59

Proviamo a trovare altri modi di rappresentare questo codice.

Suonare una lista

Un’opzione è di inserire tutte le note in una lista: [52, 55, 59]. La nostra amata funzione play è così furba da sapere come suonare una lista di note. Provala:

play [52, 55, 59]

Ooh, si legge molto più facilmente. Suonare una lista di note non ti deve fermare dall’usare i parametri:

play [52, 55, 59], amp: 0.3

Ovviamente puoi usare anche i nomi delle note tradizionali invece che numeri MIDI:

play [:E3, :G3, :B3]

Ora, quelli di voi che hanno avuto la fortuna di studiare un po’ di teoria musicale, riconosceranno quell’accordo come Mi minore (E Minor NdT), suonato nella terza ottava.

Accedere a una lista

Un’altra caratteristica utile delle liste è la possibilità di ottenere informazioni da essa. Può sembrare un po’ strano ma non è molto più complicato che chiedere a qualcuno di aprire un libro a pagina 23. Con una lista, chiederai: qual è l’elemento all’indice 23? L’unica cosa strana è che nei linguaggi di programmazioni gli indici iniziano da 0 e non da 1.

Con gli indici nelle liste non contiamo 1, 2, 3… ma 0, 1, 2…

Proviamo a capirci di più, guarda questo esempio di lista:

[52, 55, 59]

Non c’è niente di spaventoso. Qual è il secondo elemento in quella lista? Ovviamente è 55. Facile. Vediamo se riusciamo a far rispondere il computer al posto nostro:

puts [52, 55, 59][1]

Ok, sembra qualcosa di strano che non abbiamo mai visto prima. Credimi, non c’è nulla di difficile. Ci sono tre sezioni nella linea qui sopra: la parola puts, la nostra lista 52, 55, 59, e il nostro indice [1]. Per prima cosa, usiamo puts perché vogliamo che Sonic Pi stampi nel log una risposta. Poi, gli diamo la nostra lista e, infine, l’indice richiede il secondo elemento in essa. Dobbiamo inserire il nostro indice tra parentesi quadre perché il conteggio inizia a 0, l’indice per il secondo elemento sarà 1. Guarda:

# indexes:  0   1   2
           [52, 55, 59]

Prova a far girare il codice puts [52, 55, 59][1] e vedrai 55 comparire nel log. Prova a cambiare l’indica 1 con altri valori, prova ad allungare la lista e pensa a come usare una lista nei tuoi prossimi esperimenti. Per esempio, quale struttura musicale può essere rappresentata da una serie di numeri…