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
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.
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
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.
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
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
Ø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