Listas

Nesta seção nós vamos ver uma estrutura de dados que é muito útil - a Lista. Nós a encontramos antes, muito rapidamente, na seção sobre aleatorização quando nós, aleatoriamente, escolhemos notas para serem todas de uma lista:

play choose([50, 55, 62])

Nesta seção nós vamos explorar o uso de listas para representação de acordes e escalas. Primeiro vamos recapitular como nós podemos tocar um acorde. Lembre-se que se não usarmos o sleep, todos os sons acontecem ao mesmo tempo:

play 52
play 55
play 59

Vamos ver outras formas de representar este código.

Tocando uma lista

Uma das opções é colocar todas as notas em uma lista: [52, 55, 59]. A nossa conhecida função play é suficientemente inteligente para saber como tocar uma lista de notas. Tente:

play [52, 55, 59]

Ooh, isso já fica bem melhor para ler. Tocar uma lista de notas não te impede de usar qualquer outro dos parâmetros normais:

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

Claro, que você também pode usar os nomes tradicionais das notas em vez do seu número MIDI:

play [:E3, :G3, :B3]

Agora aqueles de vocês que tiveram sorte de ter estudado teoria musical podem reconhecer este acorde como Mi Menor tocado na terceira oitava.

Acessando uma lista

Uma outra característica muito útil de uma lista é a habilidade de receber informações dela. Isso pode parecer estranho, mas não é mais complicado do que alguém pedindo para você abrir um livro na página 23. Com uma lista, você pode dizer, qual é o elemento no índice 23? A única coisa estranha é que na programação os índices geralmente começam em 0 e não em 1.

Nos índices de listas nós não contamos 1, 2, 3… Nós contamos 0, 1, 2…

Vamos ver isto com um pouco mais de detalhe. Dê uma olhada nesta lista:

[52, 55, 59]

Não há nada especialmente assustador nisso. Agora, qual é o segundo elemento da lista? Sim, claro, é o 55. Isso foi fácil. Vamos ver se conseguimos fazer o computador responder isso por nós, também:

puts [52, 55, 59][1]

OK, isso pode parecer um pouco estranho se você nunca tinha visto nada com isso antes. Acredite em mim, não e nada difícil. Existem 3 partes na linha acima: a palavra puts, a nossa lista 52, 55, 59 e o nosso índice[1]. Inicialmente estamos dizendo puts porque queremos que o Sonic Pi imprima a resposta para nós, no registro. Em seguida, nós estamos fornecendo nossa lista, e finalmente nosso índice está pedindo o segundo elemento. A contagem começa em 0, o índice do segundo elemento é 1 (0=primeiro; 1=segundo; 2=terceiro; …). Devemos colocar nosso índice dentro de colchetes. Veja:

# índices:  0   1   2
           [52, 55, 59]

Tente executar o código puts [52, 55, 59][1] e você verá 55 aparecer no log. Mude o índice 1 para outros índices, tente com listas maiores e pense em como você pode usar listas na sua próxima apresentação. Por exemplo, que estruturas musicais podem ser representadas como uma série de números…