Eksempel på at lave en hel sang

Sonic Pi # 6

Når du har prøvet de basiske elementer, så kom i gang med at lave en hel sang. Det kan nemt blive super godt!

Din første bas melodi

Vi baserer vores basmelodi på en skala. Det kunne være scale(:C2, :major) Skalaen bliver tildelt en variabel, som vi kalder for bskala

Bagefter laver vi en anden variabel der indeholder rækkefølgen af toner fra skalaen vi vil spille. Den kalder vi for bass_pattern Den bliver tildelt et array af toner fra basskalaen.

Der skal også vælges en synthethizer, og der kunne :dsaw være et godt bud.

Derefter laver vi et live_loop løkke som vi giver navnet :bass Inden i løkken bruger vi play_pattern_timed til at spille vores rækkefølge, og giver den 0.5 som andet argument, for at der er et halv sekund imellem hver tone. cutoff: 80 der gør at 20% af den højeste del af tonen bliver skåret væk. sustain: 0.25 der gør at tonen lyder i et kvart sekund.

bskala = scale(:C2, :major)
bass_pattern = [bskala[1], bskala[1], bskala[0], bskala[0], bskala[2]]
use_synth :dsaw

live_loop :bass do
  play_pattern_timed bass_pattern, 0.5, cutoff: 80, sustain: 0.25
end

Din første trommemelodi

Vores trommemelodi skal have sin egen løkke. Så vi laver en live_loop som vi kalder for :drum I løkken afspiller vi en lydfil der hedder bd_haus hvilket har en bas lyd. Der findes mange andre bas lyde. Vi venter et halvt sekund med at afspille den igen. Hvorefter vi venter et sekund, spiller den igen, og venter et sekund og spiller den igen. Derefter gentages løkken. Lav gerne dit eget mønster, eller brug andre lydfiler.

live_loop :drum do
  sample :bd_haus
  sleep 0.5
  sample :bd_haus
  sleep 1
  sample :bd_haus
  sleep 1
end

Din første melodi med høje toner

Vi baserer vores lyse melodi på en skala. Det kunne være scale(:C4, :major) Skalaen bliver tildelt en variable, som vi kalder for lskala

Der skal også være en synthethizer, og der kunne :dsaw være et godt bud.

Derefter laver vi et live_loop løkke som vi giver navnet :lyse_toner Inden i løkke starter vi med at vente i 1,25 sekunder. Derefter laver vi en variable der indeholder en rækkefølge af toner. Den kalder vi for lys_pattern Den bliver tildelt et array af toner fra den lyse skala. Derefter spiller vi vores rækkefølge med play_pattern_timed og giver den 0.25 som andet argument, for at der er et kvart sekund mellem hver tone. cutoff: 90 der gør at den 10% højeste del af tonen bliver skåret væk. sustain: 0.25 der gør at tonen lyder i et kvart sekund.

Bagefter venter vi i 1,25 sekunder og afspiller en smule anderledes rækkefølge, ved at redefinere vores lys_pattern variable, og køre play_pattern_timed igen.

lskala = scale(:C4, :major)
use_synth :dsaw

live_loop :lyse_toner do
  sleep 1.25
  lys_pattern = [lskala[6], lskala[5], lskala[0], lskala[0], lskala[2]]
  play_pattern_timed lys_pattern, 0.25, sustain: 0.25, cutoff: 90
  sleep 1.25
  lys_pattern = [lskala[6], lskala[5], lskala[2], lskala[2], lskala[4]]
  play_pattern_timed lys_pattern, 0.25, sustain: 0.25, cutoff: 90
end

Sammensæt din melodi

Når du har sammensat din melodi kan det se nogenlunde sådan her ud.

bskala = scale(:C2, :major)
bass_pattern = [bskala[0], bskala[2], bskala[5], bskala[1], bskala[4]]

lskala = scale(:C4, :major)

use_synth :dsaw

live_loop :bass do
  bass_pattern.each do |bass_note|
    5.times do
      play bass_note, cutoff: 80, sustain: 0.25
      sleep 0.5
    end
  end
end

live_loop :lyse_toner do
  sleep 1.25
  lys_pattern = [lskala[6], lskala[5], lskala[0], lskala[0], lskala[2]]
  play_pattern_timed lys_pattern, 0.25, sustain: 0.25, cutoff: 90
  sleep 1.25
  lys_pattern = [lskala[6], lskala[5], lskala[2], lskala[2], lskala[4]]
  play_pattern_timed lys_pattern, 0.25, sustain: 0.25, cutoff: 90
end

live_loop :drum do
  sample :bd_haus
  sleep 0.5
  sample :bd_haus
  sleep 1
  sample :bd_haus
  sleep 1
end