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