🕺⚰🕺

##| based on https://musescore.com/user/32501159/scores/6086163
use_bpm 30

define :pre_chorus do
  play_pattern_timed [:bb4] * 4 + [:d5] * 4 + [:c5] * 4 + [:f5] * 4 + [:g5] * 12, [0.125], release: 0.125
end

in_thread do
  use_synth :saw
  
  with_fx :ixi_techno do
    play_pattern_timed [:g4] * 8, [0.125], amp: 0.25, release: 0.125
    
    cue :drum
    8.times do |i|
      play :g4, release: 0.125, amp: (i + 2) / 8.0
      sleep 0.125
    end
  end
  
  play_pattern_timed [:bb4] * 32, [0.125], release: 0.125
  
  2.times do
    pre_chorus
    
    use_synth :supersaw
    play_pattern_timed [:c5, :bb4, :a4, :f4], [0.125], release: 0.125
    
    3.times do
      play :g4, release: 0.25
      sleep 0.25
      play :g4, release: 0.125
      sleep 0.125
      play :d5, release: 0.125
      sleep 0.125
      play :c5, release: 0.25
      sleep 0.25
      play :bb4, release: 0.25
      sleep 0.25
      
      play :a4, release: 0.25
      sleep 0.25
      2.times do
        play :a4, release: 0.125
        sleep 0.125
      end
      play :c5, release: 0.25
      sleep 0.25
      play :bb4, release: 0.125
      sleep 0.125
      play :a4, release: 0.125
      sleep 0.125
      
      2.times do
        play :g4, release: 0.25
        sleep 0.25
        play_pattern_timed [:g4] + [:bb5, :a5] * 2 + [:bb5], [0.125], release: 0.125
      end
    end
  end
  
  pre_chorus
  4.times do |i|
    play :g5, release: 0.125, amp: (4 - i)/4.0
    sleep 0.125
  end
end

in_thread do
  sync :drum
  
  5.times do
    sample :drum_heavy_kick
    sleep 1
  end
  
  2.times do |i|
    if i == 0
      drum_sp = :drum_heavy_kick
    else
      drum_sp = :bd_tek
    end
    
    16.times do
      sample drum_sp, release: 0.125
      sleep 0.125
    end
    24.times do
      sample drum_sp, release: 0.0625
      sleep 0.0625
    end
    sleep 0.5
    
    24.times do
      sample :bd_tek, release: 0.125
      sleep 0.125
      sleep 0.0625
      sample :bd_tek, release: 0.0625
      sleep 0.0625
      2.times do
        sample :bd_tek, release: 0.125
        sleep 0.125
      end
    end
  end
  
  4.times do |i|
    8.times do |j|
      if i == 3
        sample :bd_tek, release: 0.125, amp: (8 - j)/8.0
      else
        sample :bd_tek, release: 0.125
      end
      sleep 0.125
    end
  end
end

Okay move along, move along people, there’s nothing to see here!