Skip to content

Instantly share code, notes, and snippets.

@mbutz
Created April 30, 2017 18:19
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save mbutz/c03245f7b256d7b6ebb7a41ef0cd5ab2 to your computer and use it in GitHub Desktop.
Save mbutz/c03245f7b256d7b6ebb7a41ef0cd5ab2 to your computer and use it in GitHub Desktop.
# filename: modulo-random-melody.rb
use_bpm 120
live_loop :bar do
sleep 4
end
live_loop :phrase, sync: :bar do
sleep 4 * 2
end
phrase_len = 128
cycle_len = phrase_len * 3
live_loop :modulo_rand_melody, sync: :bar do
#stop
cycle_cnt = tick % cycle_len + 1
phrase_no = look/phrase_len
puts "-----------------------------------------------"
puts "Tick: #{look} | %: #{cycle_cnt} | Phrase No.: #{phrase_no} |"
puts "-------------------------------------------------"
# Set a different notes per phrase
if cycle_cnt <= phrase_len then
main = chord((ring :c4,:c5).look, :minor7, num_octaves: 2).choose
support = chord((ring :f3, :g3).look, :minor, num_octaves: 1).choose
elsif cycle_cnt <= phrase_len * 2 then
main = chord((ring :a4,:a5).look, :minor7, num_octaves: 2).choose
support = chord((ring :d3, :e3).look, :minor, num_octaves: 1).choose
elsif cycle_cnt <= phrase_len * 3 then
main = chord((ring :f4,:f5).look, :minor7, num_octaves: 2).choose
support = chord((ring :bb3, :c3).look, :minor, num_octaves: 1).choose
end
rel = (ring 0.125, 0.25, 0.5).choose
density [0.5,1].choose do
with_fx :reverb, room: 0.5, mix: 0.75 do |rev|
control rev, room: 1, room_slide: 1, mix: 1, mix_slide: 1.5
if spread([9,13,15].choose,16).look
m = synth :fm, note: main, attack_level: 1.5, release: rel, depth: [3,5].choose, divisor: [0,0.1,0.2,0.4,0.6].choose, pan: (ring -0.75, 0.75).choose
control m, depth_slide: 0.25, depth: 0.1
end
if spread([7,11].choose,16).look
s = synth :fm, note: support, attack_level: 1.5, release: rel, depth: 1, divisor: 0.25, amp: 0.75, pan: (ring -0.75, 0.75).choose
control s, depth_slide: 0.025, depth: 0.5
end
end
sleep (ring 0.25,0.25,0.5).choose
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment