Sonic Pi

Ah ja - dat is het! Dank! Ik dacht dat "1" de default waarde is, maar kennelijk klaagt die toch ook als je het niet expliciet vermeldt.
 
Weer iets verder...

Code:
use_bpm 60

define :basis1 do |ins|
  use_synth ins
 
  noten1 = [:d4, :e4, :g4, :d4, :e4, :c4]
  duren1 = [0.25, 0.25, 0.5, 0.25, 0.25, 0.5]
  noten2 = [:d4, :e4, :g4, :d4, :c5, :f4]
  duren2 = [0.25, 0.25, 0.5, 0.25, 0.25, 0.5]
 
  play_pattern_timed noten1, duren1
  play_pattern_timed noten2, duren2
  play_pattern_timed noten1, duren1
  sleep 1
end


define :basis2 do |ins|
  use_synth ins
 
  noten3 = [:c5, :e4, :c4, :c4, :g4, :e4, :d4, :e4]
  duren3 = [0.25, 0.25, 0.5, 0.25, 0.25, 0.5, 0.25, 0.25]
  noten4 = [:d4, :e4, :g4, :d4, :c5, :f4, :d4, :f4]
  duren4 = [0.25, 0.25, 0.5, 0.25, 0.25, 0.5, 0.25, 0.25]
  noten5 = [:c5, :e4, :c4, :c4, :g4, :e4, :d4, :f4, :c5]
  duren5 = [0.25, 0.25, 0.5, 0.25, 0.25, 0.5, 0.25, 0.25, 1]
 
  play_pattern_timed noten3, duren3
  play_pattern_timed noten4, duren4
  play_pattern_timed noten5, duren5
  sleep 1
end

define :power do |root|
  use_synth :prophet
  with_fx :distortion, distort: 0.9 do
    play_chord [root, root+7, root+12], sustain: 1
    sleep 1
  end
end

basis1 :dull_bell

basis2 :pretty_bell

sleep 0.5

live_loop :drums do
  sample :loop_mika, amp: 5
  sleep 8
end

sleep 8

live_loop :heavy do
  power note(:c2)
  sleep 1
  power note(:d2)
  sleep 1
  power note(:c2)
  sleep 1
  power note(:e2)
  sleep 1
  power note(:g2)
  sleep 1
  power note(:a2)
  sleep 1
  power note(:d2)
  sleep 1
  power note(:c2)
  power note(:c3)
  power note(:c4)
  sleep 4
end

 
Weer iets verder...

Code:
use_bpm 60

define :basis1 do |ins|
  use_synth ins
 
  noten1 = [:d4, :e4, :g4, :d4, :e4, :c4]
  duren1 = [0.25, 0.25, 0.5, 0.25, 0.25, 0.5]
  noten2 = [:d4, :e4, :g4, :d4, :c5, :f4]
  duren2 = [0.25, 0.25, 0.5, 0.25, 0.25, 0.5]
 
  play_pattern_timed noten1, duren1
  play_pattern_timed noten2, duren2
  play_pattern_timed noten1, duren1
  sleep 1
end


define :basis2 do |ins|
  use_synth ins
 
  noten3 = [:c5, :e4, :c4, :c4, :g4, :e4, :d4, :e4]
  duren3 = [0.25, 0.25, 0.5, 0.25, 0.25, 0.5, 0.25, 0.25]
  noten4 = [:d4, :e4, :g4, :d4, :c5, :f4, :d4, :f4]
  duren4 = [0.25, 0.25, 0.5, 0.25, 0.25, 0.5, 0.25, 0.25]
  noten5 = [:c5, :e4, :c4, :c4, :g4, :e4, :d4, :f4, :c5]
  duren5 = [0.25, 0.25, 0.5, 0.25, 0.25, 0.5, 0.25, 0.25, 1]
 
  play_pattern_timed noten3, duren3
  play_pattern_timed noten4, duren4
  play_pattern_timed noten5, duren5
  sleep 1
end

define :power do |root|
  use_synth :prophet
  with_fx :distortion, distort: 0.9 do
    play_chord [root, root+7, root+12], sustain: 1
    sleep 1
  end
end

basis1 :dull_bell

basis2 :pretty_bell

sleep 0.5

live_loop :drums do
  sample :loop_mika, amp: 5
  sleep 8
end

sleep 8

live_loop :heavy do
  power note(:c2)
  sleep 1
  power note(:d2)
  sleep 1
  power note(:c2)
  sleep 1
  power note(:e2)
  sleep 1
  power note(:g2)
  sleep 1
  power note(:a2)
  sleep 1
  power note(:d2)
  sleep 1
  power note(:c2)
  power note(:c3)
  power note(:c4)
  sleep 4
end

Bekijk bijlage 3874403
Een tip:
Je kan meerdere parameters aan een functie koppelen, en die ook een default waarde geven.

B.v.:
Ruby:
define :power do |root, rust=0|
  use_synth :prophet
  with_fx :distortion, distort: 0.9 do
    play_chord [root, root+7, root+12], sustain: 1
    sleep 1
  end
  sleep rust
end

en
Ruby:
live_loop :heavy do
  power note(:c2, 1)
  power note(:d2, 1)
  power note(:c2, 1)
  power note(:e2, 1)
  power note(:g2, 1)
  power note(:a2, 1)
  power note(:d2, 1)
  power note(:c2)
  power note(:c3)
  power note(:c4)
  sleep 4
end

Zo wordt je code compacter, en bij "power note" is het ook meteen duidelijk hoe lang de rust is.

duren1 en duren2 hebben dezelfde waardes, en duren3 en duren4 hebben ook dezelfde waardes.
Je kan dus -als je dat wil- schrijven:
Ruby:
duren2 = duren1
duren4 - duren3
 
Laatst gewijzigd:
Dank! Heb de tips verwerkt, maar er gaat iets mis:

error.png
 
Klinkt als fm sound das leuk beetje half jaren 80..
 
Dank! Heb de tips verwerkt, maar er gaat iets mis:

Bekijk bijlage 3874405
Mijn excuses. Ik had over het hoofd gezien dat je na 'power' ook 'note' gebruikt had.
De tweede parameter hoort bij 'power', niet bij 'note'.
Dus er moet staan: power note(:c2), 1

Je kan de 'note' ook weglaten, dan wordt het:
Ruby:
live_loop :heavy do
  power :c2, 1
  power :d2, 1
  power :c2, 1
  power :e2, 1
  power :g2, 1
  power :a2, 1
  power :d2, 1
  power :c2
  power :c3
  power :c4
  sleep 4
end

Nog compacter wordt het als je 'rings' gebruikt:
Ruby:
live_loop :heavy do
  10.times do
    power [:c2,:d2,:c2,:e2,:g2,:a2,:d2,:c2,:c3,:c4].tick,[1,1,1,1,1,1,1,0,0,0].look
  end
end
 
Mijn spielereitje is klaar:

Code:
use_bpm 160

# ----------------------------------scores----------------------------------

noten1 = [:d4,:e4,:g4,:d4,:e4,:c4]
duren1 = [0.5,0.5,1,0.5,0.5,1]
noten2 = [:d4,:e4,:g4,:d4,:c5,:f4]
duren2 = duren1
noten3 = [:c5,:e4,:c4,:c4,:g4,:e4,:d4,:e4]
duren3 = [0.5,0.5,1,0.5,0.5,1,0.5,0.5]
noten4 = [:d4,:e4,:g4,:d4,:c5,:f4,:d4,:f4]
duren4 = duren3
noten5 = [:c5,:e4,:c4,:c4,:g4,:e4,:d4,:f4,:c5]
duren5 = [0.5,0.5,1,0.5,0.5,1,0.5,0.5,2]

groove = (ring :c1,:e1,:g1,:e1,:g2,:a1,:e2,:c2,:c2,:e2,:g2,:e2,:g2,:a1,:e2,:f2)
rests = (ring 0.67,0.67,0.67,0.67,0.67,0.68,0.68,0.68,0.68,0.67,0.67,0.67,0.67,0.67,0.67,0.67)


# ------------------------------definitions---------------------------------

define :basis1 do |ins|
  use_synth ins
  with_fx :level, amp: 0.3 do
    play_pattern_timed noten1, duren1
    play_pattern_timed noten2, duren2
    play_pattern_timed noten1, duren1
  end
  sleep 1
end

define :basis2 do |ins|
  use_synth ins
  with_fx :level, amp: 0.3 do
    play_pattern_timed noten3, duren3
    play_pattern_timed noten4, duren4
    play_pattern_timed noten5, duren5
    sleep 1
  end
end

define :rhythm do
  in_thread do
    2.times do
      sample :loop_mika
    end
  end
end

define :bass do |harmonic|
  for i in 0..(15)
    with_fx :level, amp: 0.4 do
      play note(groove[i]) + harmonic
      sleep rests[i]
    end
  end
  sleep 1
end

define :basso do
  in_thread do
    bass 0
  end
  in_thread do
    bass 7
  end
  in_thread do
    bass 12
  end
end


# ----------------------------------play------------------------------------

basis1 :dull_bell

basis2 :pretty_bell

sleep 1

rhythm

sleep 23

rhythm

basso

sleep 23

basis1 :dull_bell

sleep 1

in_thread do
  basis1 :dull_bell
  basis2 :dull_bell
end

sleep 1

in_thread do
  basis1 :dull_bell
  basis2 :dull_bell
  basis1 :pretty_bell
end

sleep 1

in_thread do
  basis1 :pretty_bell
  basis2 :pretty_bell
end

sleep 1

in_thread do
  with_fx :ping_pong, feedback: 0.98 do
  end
end



Hiermee is het mij duidelijk dat ik met Sonic Pi voor speelse muziekjes voorlopig ruimschoots uit de voeten kan.
 
Back
Top