Listas

Nesta secção vamos dar uma vista de olhos à estrutura de dados que é bastante útil - a lista. Já encontramos anteriormente na secção de aleatoriedade quando escolhíamos de uma lista de notas a tocar:

play choose([50, 55, 62])

Nesta secção iremos explorar o uso de listas para representar acordes e escalas. Primeiro vamos recapitular em como poderemos querer tocar um acorde. Lembra-te que se não usarmos o sleep, o som acontece todo ao mesmo tempo:

play 52
play 55
play 59

Vamos ver outras maneiras de representar este código.

Tocando uma lista

Uma das opções é colocar todas as notas numa lista: [52, 55, 59]. O nosso amigável play é suficientemente esperto para saber como tocar uma lista de notas. Tenta:

play [52, 55, 59]

Ooh, já é bastante melhor de se ler. Tocar uma lista de notas não te impede de usar qualquer outro parâmetro normalmente:

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

Claro, que poderás usar o nome tradicional das notas em vez do seu número MIDI:

play [:E3, :G3, :B3]

Aqueles sortudos que estudaram teoria musical poderão reconhecer o acorde como Mi Menor tocado na terceira oitava.

Acedendo à lista

Uma outra característica bastante útil numa lista é a habilidade de receber informação dela. Isto pode soar estranho, mas não é mais complicado do que alguém pedir para abrir o livro na pagina 23. Com uma lista, dizes, qual é o elemento do índice 23? A única coisa estranha é que os índices na programação geralmente começam do 0 e não do 1.

Com os índices das listas não contamos 1, 2, 3… Em vez disso contamos 0, 1, 2…

Vamos ver isto em mais detalhe. Vê esta lista:

[52, 55, 59]

Não existe nada assustador sobre isto. Agora, qual é o segundo elemento da lista? Sim , claro que é o 55. É fácil. Vamos ver se o computador dá a mesma resposta que nós:

puts [52, 55, 59][1]

Ok, isto é um pouco esquisito se não tinhas visto algo assim anteriormente. Acredita em mim, não é difícil. Existe 3 partes na linha acima: a palavra puts, a nossa lista 52, 55, 59 e o nosso índice[1]. Primeiro estamos a dizer puts porque queremos que o Sonic Pi imprima a resposta no registo. Segundo, estamos a dar a nossa lista e finalmente o índice está a perguntar pelo segundo elemento. Necessitamos de rodear o nosso índice com parênteses rectos e como a contagem começa do 0, o índice do segundo elemento é 1. Olha:

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

Tenta correr o código puts [52, 55, 59][1]e verás 55 aparecer no registo. Muda o indice 1para outros índices, tenta listas maiores e pensa em como podes usar uma lista na próxima sessão de jam. Por exemplo, que estruturas musicais podem ser representadas por uma serie de números…