Genrera ljud
Du minns chord
, som ger ackordets toner som en lista?
play chord(:c, :major).choose
# Spelar slumpmässigt toner från C-dursackordet (:c, :e tai :g)
I Sonic Pi kan du också använda kommandot scale
, som ger dig alla toner i en skala.
play scale(:c, :major).choose
# soittaa satunnaisesti C-duuriskaalan säveliä (:c, :d, :e, :f, :g, :a or :b)
Med choose
kan du välja slumpmässiga element från en lista. Om vill gå igenom en hel lista i ursprunglig ordning kan du använda en väldigt praktisk metod för det: tick
:
live_loop :arp do
play scale(:e3, :minor_pentatonic).tick, release: 0.1
sleep 0.125
end
I exemplet går programmet igenom alla toner i E-mollskalan i tredje oktaven. Som du der lyckas det genom att tillägga .tick
efter föregående scale
- eller chord
-kommandon. Tick
är lokal för varje live_loop
, så du kan använda den i varje loop skillt.
live_loop :arp do
play scale(:e3, :minor_pentatonic).tick, release: 0.1
sleep 0.125
end
live_loop :arp2 do
use_synth :dsaw
play scale(:e2, :minor_pentatonic, num_octaves: 3).tick, release: 0.25
sleep 0.25
end
En kedja (ring) skiljer sig från en lista i att tick återvänder till första elementet efter att hela ringen har gåtts igenom. I föregående exempel fortsatte genomgången av scale efter sista elementet. scale
och chord
ger båda en alltid en kedja istället för en lista. Ibland kan det löna sig att ändra en lista till en kedja, och det lyckas så här:
live_loop :arp do
play [:c, :e, :d, :f].ring.tick, release: 0.1
sleep 0.125
end
Nu tar vi ett titt på ett mera avancerat exempel. Här ändras en lista av ackord till en kedja som gås igenom med hjälp av .tick
.
live_loop :keys do
use_synth :blade
play [chord(:Ab, :major7), chord(:Db, :major7), chord(:Bb, :minor7), chord(:Eb, '7')].ring.tick, attack: 0.1, release: 1
sleep 1
end
Och till slut kan vi lägga till en melodi. Obs! .mirror
vänder melodin så att det sista elementet spelas först osv.
live_loop :keys do
use_synth :blade
play [chord(:Ab, :major7), chord(:Db, :major7), chord(:Bb, :minor7), chord(:Eb, "7")].ring.tick, attack: 0.1, release: 1
sleep 1
end
live_loop :lead do
use_synth :dsaw
play scale(:Ab, :major, num_octaves: 3).mirror.tick, attack: 0.05, release: 0.25, cutoff: rrand(80, 110), amp: 0.5
sleep 0.25
end
Prova tick
med olika slags listor och kedjor och låt datorn ta hand om att spela melodierna!