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.
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.
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 1
para 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…