Skalaer og mængde afspilning

Sonic Pi # 4

Der er både metoder og teori der kan få kickstartet en god melodi. Her kigger vi på skalaer fra musikteori, og et par sonic pi metoder der får udført en masse på få tegn.

playpatterntimed

Der findes en function der kan afspille en hel melodi på en enkelt linje. play_pattern_timed afspiller et array af noder med et tidsinterval.

noder = [:E3, :C3, :E3, :E3, :D3, :C3, :E3]
play_pattern_timed noder, 0.25

Prøv at skifte 0.25 med et andet kommatal. Man kan også give en række pauser som f.eks. [0.25, 0.5, 0.25]

Skalaer

En Skala er en række af toner. Oftest byggest musik udfra tonerne i en bestemt skala. Man kan sige at det er en række toner der lyder godt sammen.

C Dur skalaen består af tonerne C, D, E, F, G, A, B

play :C3
sleep 0.25
play :D3
sleep 0.25
play :E3
sleep 0.25
play :F3
sleep 0.25
play :G3
sleep 0.25
play :A3
sleep 0.25
play :B3
sleep 0.25

Prøv at byt om i rækkefølgen, sæt flere af samme tone ind, eller ændre på timingen med andre pauseværdier.

Man kan også afspille en hel skala på en linje kode ved at bruge scale og play_pattern_timed scale skal vide hvilken Grundnode, octav, og om det er i dur/mol eller på engelsk “major” og “minor”. play_pattern_timed skal vide hvilken skala og hvad pauserne er. Man kan enten give en række pauser [0.25, 0.5, 0.25] eller bare den samme værdi til alle pauser (som vist).

play_pattern_timed scale(:C3, :major), 0.25

Hvis du vil vide mere om skalaer, akkorder og musikteori så prøv at tjek https://sonic-pi.mehackit.org/exercises/en/09-keys-chords-and-scales/01-piano.html

Øvelsesæt 4

Øvelse 1

Der er en ekstra ting play_pattern_timed gør. Prøv at finde ud af det ved at afspille disse 2 eksempler og hør efter forskellen.

use_synth :dsaw
use_bpm 80

loop do
  noder = [:Db4,:Eb4,:Ab3,:Eb4,:F4,:Ab4,:Gb4,:F4,:Eb4,:Db4,:Eb4,:Ab3,:Ab3,:Ab3,:Ab3,:Bb3,:Db4]
  pauser = [1, 1, 0.75, 1, 1, 0.18, 0.18, 0.18, 0.18, 1, 1, 0.75, 0.75, 0.25, 0.25, 0.25, 1]
  play_pattern_timed noder, pauser
end

Hvad er forskellen mellem koden over og det under?

use_synth :dsaw
use_bpm 80

loop do
  noder = [:Db4,:Eb4,:Ab3,:Eb4,:F4,:Ab4,:Gb4,:F4,:Eb4,:Db4,:Eb4,:Ab3,:Ab3,:Ab3,:Ab3,:Bb3,:Db4]
  pauser = [1, 1, 0.75, 1, 1, 0.18, 0.18, 0.18, 0.18, 1, 1, 0.75, 0.75, 0.25, 0.25, 0.25, 1]
  noder.length.times do |i|
    play noder[i]
    sleep pauser[i]
  end
end

Kunne du forresten genkende sangen? Den findes her https://www.youtube.com/watch?v=dQw4w9WgXcQ

Øvelse 2

Gå ind på https://sonic-pi.mehackit.org/exercises/en/09-keys-chords-and-scales/01-piano.html Vælg en “Scale” Skriv kode der spiller 10 forskellige noder der er grå. Husk pauser med sleep. Prøv at bruge play_pattern_timed

Øvelse 3

Prøv en scale som scale(:B, :minor) og spil tilfældige noder fra den sådan her. Prøv andre bogstaver i stedet for :B og :major i stedet for :minor

use_synth :supersaw
live_loop :musik do
  node = scale(:B, :minor).sample
  play node
  sleep 0.25
end

Øvelse 4

Tjek scales i sonic pi editoren, vælg en og kør den med play_pattern_timed Hvor man kan finde skalaer i sonic pi editor docs