Ruby data strukturer

Sonic Pi # 3

Sonic Pi er en DSL (Domain Specific Language) til Ruby. Altså det er en slags dialægt af sproget til at programmere lyd.
Derfor er der en masse Ruby man kan lære som også bliver brugt til at lave hjemmesider og apps.

Ruby Variabler

For at give værdier som 60 eller :C3 et navn kan man tildele dem til en variabel.
Man kan derefter bruge variablen ligesom det var værdien.

tromme = :drum_kick_heavy
sample tromme

bas = :C1
play bas

Ruby Arrays

For at bruge skalaer eller opsætte rækkefølger af noder, så er det ofte smart at bruge et "Array"
Et array datatype der består af flere værdier. Man skriver et array ved at bruge [ hvorefter man skriver sine værdier separeret med komma, og så slutte med et ]

noder = [:c3, :d3, :e3, :f3]
noder.each do |node|
  play node
  sleep 0.5
end
play noder[0]
sleep 0.5
play noder[1]

Ved at bruge .each på et array, kan man iterere den igennem og gøre noget for hvert element i array'et.
Ved at bruge [0] så tilgår man det første element, [1] tilgår det andet element, osv.

Pick

Man kan tage en tilfældig værdi fra et array ved at bruge .pick
For eksempel kan du spille tilfældige noder fra et array sådan her.

loop do
  play [:C4, :A4, :G4, :E4].pick
  sleep 0.5
end

Shuffle

Man kan blande rækkefølgen på værdierne i et array ved at bruge .shuffle
Det kan bruges til at lave ny tilfældig lyd hver gang du trykker afspil!

[:C4, :E4, :G4, :F4].shuffle.each do |node|
  play node
end

Øvelsessæt 3

Øvelse 1
Prøv at tilføje til arrayet flere af samme node, f.eks. :C4
Hvad ændrer det ved musikken?

loop do
  play [:C4, :A4, :G4, :E4].pick
  sleep 0.5
end

Øvelse 2
Lav tilfældige pauser ligesom der bliver spillet tilfældige noder

insert_drive_file