mileszs
11/30/2018 - 6:04 PM

jinglebells.rb

live_loop :drums do
  sample :drum_heavy_kick
  sleep 0.25
  sample :bass_hit_c
  sleep 0.25
end

live_loop :snare do
  sync :drums
  sleep 0.5
  sample :perc_snap
  sleep 0.25
  sample :perc_snap
  sleep 0.5
  sample :perc_snap
  sleep 0.5
  sample :perc_snap
  sleep 0.25
end

live_loop :jinglebells do
  sync :drums
  use_synth :chiplead
  play_pattern_timed(
    [:e4, :e4, :e4, :e4, :e4, :e4, :e4, :g4, :c4, :d4, :e4],
    [0.5, 0.5, 1, 0.5, 0.5, 1, 0.5, 0.5, 0.75, 0.25, 2],
    { release: 0.25, amp: 0.5, pan: [-0.5, 0, 0.5].choose }
  )
  play_pattern_timed(
    [:f4, :f4, :f4, :f4, :f4, :e4, :e4, :e4, :e4, :d4, :d4, :e4, :d4, :g4],
    [0.5, 0.5, 0.75, 0.25, 0.5, 0.5, 0.75, 0.25, 0.5, 0.5, 0.5, 0.5, 1],
    { release: 0.25, amp: 0.5, pan: [-0.8, 0, 0.8].choose }
  )
  sleep [0, 0, 0, 4, 8, 12].choose
end

live_loop :atmosphere do
  noise = [:sine, :fm, :square, :bnoise].choose
  use_synth noise
  p = play (chord :E1, :major).choose - [0, 12, -12].choose, divisor: 0.01, div_slide: rrand(0, 10), depth: rrand(0.001, 2), attack: 0.01, release: rrand(0, 5), amp: 0.25
  control p, divisor: rrand(0.001, 50)
  sleep [0.5, 1, 2].choose
end
#
# live_loop :stutter do
#   if [true, false].choose
#     notes = [:e4, :e4, :e4, :e4, :e4, :e4, :e4, :g4, :c4, :d4, :e4]
#     intervals = [0.5, 0.5, 1, 0.5, 0.5, 1, 0.5, 0.5, 0.75, 0.25, 2]
#     limit = rrand(3, notes.size)
#     play_pattern_timed(
#       notes[0...limit],
#       intervals[0...limit]
#     )
#   else
#   end
# end