Lijsten

In deze sectie zullen we een kijkje nemen naar een datastructuur die zeer nuttig kan zijn - de lijst. We hebben dit al kort gezien in het gedeelte over randomiseren, wanneer we willekeurig uit een lijst van noten kiezen om te spelen:

play choose([50, 55, 62])

In deze sectie verkennen we om ook akkoorden en toonladders door lijsten te laten vertegenwoordigen. Eerste recapituleren we even hoe we een snaar kunnen bespelen. Denk eraan dat als we geen gebruik maken van sleep we alle klanken tezelfdertijd horen :

play 52
play 55
play 59

Laten we eens kijken naar andere manieren om deze code weer te geven.

Afspelen van een lijst

Een optie zou kunnen zijn om alle noten in een lijst te zeten [52, 55, 59]. Onze vriendschappelijke play functie is slim genoeg om een lijst van noten te kunnen spelen. Probeer maar:

play [52, 55, 59]

Ooh, dat is al aangenamer om lezen. Een lijst met noten afspelen weerhoud je niet om de gewoonlijke parameters te gaan gebruiken:

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

Natuurlijk kan je ook de traditionele benaming van de noten gebruiken ipv. de MIDI nummers:

play [:E3, :G3, :B3]

De gelukkigen onder jullie die wat muziektheorie hebben geleerd, hebben het akkoord E Mineur in het 3de octaaf herkend.

Toegang tot een lijst

Een andere zeer nuttige functie van een lijst is de mogelijkheid om er informatie uit te krijgen. Dit klinkt misschien een beetje vreemd, maar het is niet ingewikkelder dan iemand die jou vraagt een boek op pagina 23 open te slaan. Bij een lijst, zou je kunnen zeggen: wat is het element op index 23? Het vreemde alleen is dat programmeer indexen meestal bij 0 beginnen en niet 1.

Met lijst indexen tellen we niet 1,2,3… maar 0,1,2…

Laten we dit een beetje meer in detail bekijken. Neem een kijkje naar deze lijst:

[52, 55, 59]

Dit is niet onoverkomelijk. Wat is nu het tweede element in de lijst? Dat is 55 natuurlijk ja. Dat was makkelijk. Laten we eens kijken of de computer zover kunnen krijgen om dit voor ons te doen:

puts [52, 55, 59][1]

OK, dat ziet er misschien een beetje raar als je nog nooit zoiets gezien hebt. Geloof me maar, het is niet te moeilijk. Er zijn drie onderdelen naar de regel erboven: het woord puts, onze lijst ‘ 52, 55, 59’ en onze index ‘[1]’. Ten eerste: we zeggen puts omdat we willen dat Sonic Pi het antwoord voor ons in het logboek afdrukt . Vervolgens geven we het onze lijst, en tenslotte vraagt onze index naarr het tweede element. We moeten onze index omringen met vierkante haken en omdat tellen bij ‘0’ begint, is de index voor het tweede element 1. Kijk:

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

Probeer de code uit te voeren ´puts [52, 55, 59] [1] en je ziet 55´ in het logboek opduiken. Zet de index ´1´ om in andere indexen, probeer langere lijsten en denk na over hoe u een lijst in uw volgende code jam kunt gebruiken. Welke muzikale structuren kunnen bijvoorbeeld worden weergegeven als een reeks getallen…