Media

Sonic Pi

Sonic Pi is a free and open source application that allows you to create music by writing real code in a Ruby programming language dialect. It comes with its own text editor and built-in audio samples. Example code:

live_loop :main do
  sleep 1
end

short_sleep = 0.5
long_sleep = 3

define :double_bass_hard do
  2.times do
    sample :drum_bass_soft, rate:1.5, amp: 5
    sleep  short_sleep
  end
  sample :drum_bass_hard, beat_stretch: 1.5, amp: 5
  sleep long_sleep
end

define :background do
  use_synth :tech_saws
  2.times do
    play :c3, sustain: short_sleep, amp:0.5
    sleep short_sleep
  end
  play :c4, sustain: long_sleep, amp:0.5
  sleep long_sleep
end

define :melody_base do
  play :d5
  sleep  0.5
  play :d5
  sleep  0.5
  play :f5
  sleep  0.5
  play :d5
  sleep  0.5
end

define :melody_pause do
  sleep  4*short_sleep
end

define :melody_grade_up do
  play :b5
  sleep  0.5
  play :c6
  sleep  0.250
  play :d6
  sleep  0.250
  play :e6
  sleep  0.250
  play :c6
  sleep  0.250
  play :a5
  sleep  0.5
end

define :melody_grade_down do
  play :b5
  sleep  0.5
  play :c6
  sleep  0.250
  play :e6
  sleep  0.250
  play :d6
  sleep  0.250
  play :c6
  sleep  0.250
  play :a5
  sleep  0.5
end

define :melody do
  2.times do
    2.times do
      melody_base
      melody_pause
    end
    2.times do
      melody_base
      melody_grade_down
      melody_base
      melody_grade_up
    end
  end
end

define :lively do
  use_synth :kalimba
  play chord(:e4, :m7).choose, release: 0.5, amp: 4
  sleep 0.5
end

live_loop :mel, sync: :main do
  background
end

live_loop :melody_loop, sync: :main do
  use_synth :tech_saws
  8.times do
    melody_pause
  end
  melody
  in_thread(name: :bass_thread) do
    8.times do
      double_bass_hard
    end
  end
  in_thread(name: :lively_thread) do
    if one_in(2)
      64.times do
        lively
      end
    end
  end
end