Dont fancy pubbin and clubbin in the wet… so I sat
home and wrote my own…
As usual, you can switch between versions using the uncomment/comment section
at the end of the code…
Eli…
#Classic Techno?
# Anthemic House?
# God knows...
#Eli...
use_debug false
use_bpm 120
set_volume! 5
tracker = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
kick_vol = (line 0.2, 3, inclusive: true, steps: 5).ramp
notes = (scale :e3, :minor_pentatonic).shuffle
define :start_loop do |i|
tracker[i] = 1
end
define :stop_loop do |i|
tracker[i] = 0
end
define :sn_roll do #|length|
in_thread do
sn_amp = 0.5
4.times do
sample :sn_dolf, amp: sn_amp, sustain: 0, release: 0.125
sleep 0.0625
sn_amp += 0.07
end
end
end
drum_vol = (line 0.2, 2, inclusive: true, steps: 5).ramp
define :stop_all do
tracker[0] = 0
tracker[1] = 0
tracker[2] = 0
tracker[3] = 0
tracker[4] = 0
tracker[5] = 0
tracker[6] = 0
tracker[7] = 0
tracker[8] = 0
tracker[9] = 0
end
live_loop :bar do
sleep 1
end
live_loop :beats do
sync :bar
sleep 4
cue :bass
end
live_loop :kick do
if tracker[0]>0 then
sync :bar
sample :bd_ada,amp: 0.4*kick_vol.look
sleep 2
sample :bd_ada,amp: 0.4*kick_vol.look
sleep 2
else
sleep 1
end
tick
end
live_loop :hats do
if tracker[1]>0 then
sample :drum_cymbal_closed, sustain: 0.125, amp: 0.3*drum_vol.look if rand > 0.9
sleep 0.5
sample :drum_cymbal_closed, sustain: 0.125, amp: 0.5*drum_vol.look
sleep 0.5
else
sleep 1
end
tick
end
live_loop :rim do
if tracker[2]>0 then
sync :kick
with_fx :distortion do
sleep 0.5
sample :elec_blip, sustain: 0.006, cutoff:110, rate: 0.5, amp: 0.2*drum_vol.look
sleep 0.25
if rand(1) < 0.65 then
sample :elec_blip, sustain: 0.005, cutoff:110, rate: 0.5, amp: 0.1*drum_vol.look
sleep 0.125
else
sleep 0.125
end
sleep 0.125
end
else
sleep 1
end
tick
end
with_fx :reverb, mix: 0.35, room: 0.1, damp: 0.9 do
live_loop :snare do
if tracker[3]>0 then
sync :kick
use_sample_defaults sustain: 0, release: 0.25
del = [0.25, 0.5, 0.75].choose
cue :bass
sleep del
sample :drum_snare_soft, amp: 0.3*drum_vol.look if rand > 0.5
sleep 1 - del
sample :drum_snare_soft, amp: 0.4*drum_vol.look if rand > 0.5
sleep del
else
sleep 1
end
tick
end
end
live_loop :drums do
if tracker[4]>0 then
sync :bar
sample :bd_tek, amp: 5, beat_stretch: 1
sleep 1
else
sleep 0.25
end
end
live_loop :roll do
if tracker[5]>0 then
sn_roll
sleep 1
else
sleep 0.25
end
sleep 4
end
live_loop :intro1 do
if tracker[6]>0 then
sync :bar
use_synth :supersaw
use_synth_defaults cutoff: rrand(70, 110), release: rrand(1, 4), amp: 1
with_fx :panslicer, mix: 0.5 do
with_fx :hpf, cutoff: 70 do
with_fx :reverb, mix: 0.4 do
with_fx :echo, mix: 0.2 do
2.times do
play_chord chord(:D3, :minor )
sleep 0.75
end
sleep 0.5
play_chord chord(:D4, :minor ), attack: 4, release: 2
sleep 2
end
end
end
end
else
sleep 0.25
end
end
live_loop :xylo do
if tracker[7]>0 then
sync :beats
x = 0
xylophone = [62,57,x,60,x,55,x,x,53,x,55,x,52,x,57,x,
62,57,x,60,x,55,x,x,53,x,55,x,52,x,57,x,
62,57,x,60,x,55,x,x,53,x,55,x,52,x,57,x,
62,57,x,60,x,55,x,x,53,x,55,x,52,x,57,x,
62,57,x,60,x,55,x,x,53,x,55,x,52,x,57,x].ring
xylophone_offset =[0,0,50,0,50,0,50,50,0,50,0,50,0,50,0,50,
0,0,48,0,48,0,48,48,0,48,0,48,0,48,0,48,
0,0,62,0,62,0,62,62,0,62,0,62,0,62,0,62,
0,0,48,0,48,0,48,48,0,48,0,48,0,48,0,48,
0,0,62,0,62,0,62,62,0,62,0,62,0,62,0,62].ring
xylophone_octave = [0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,1,0,1,0,1,1,0,1,0,1,0,1,0,1,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,1,0,1,0,1,1,0,1,0,1,0,1,0,1].ring
if xylophone_octave.look == 1 then
use_synth :supersaw
else
use_synth :supersaw
end
with_fx :reverb, mix: 0.4 do
with_fx :echo, mix: 0.2 do
64.times do
play xylophone.look+xylophone_offset.look+(12*xylophone_octave.look), amp: rrand_i(0.4,0.6),
duration: 0.25
sleep 0.5
tick
end
end
end
else
sleep 0.25
end
end
with_fx :reverb, room: 0.8 do
live_loop :space_scanner do
if tracker[8]>0 then
use_synth :tb303
with_fx :slicer, phase: 0.25, amp: 1.5 do
co = (line 70, 130, steps: 8).tick
play :e4, cutoff: co, release: 7, attack: 1, cutoff_attack: 4, cutoff_release: 4
sleep 4
end
else
sleep 0.25
end
end
end
live_loop :foo do
if tracker[9]>0 then
sync :bar
use_synth :fm
play (ring :e3, :c2, :a1).tick
play (scale :e3, :minor_pentatonic).tick
sleep 0.5
else
sleep 0.25
end
end
live_loop :foo1 do
if tracker[9]>0 then
use_synth :blade
sync :bar
with_fx :reverb, reps: 8, room: 1 do
tick
co = (line 76, 130, steps: 8).tick(:cutoff)
play (octs [:e3,:c3,:a3].choose, 3).look, cutoff: co, amp: 1
play notes.look, amp: 4
sleep 0.5
end
else
sleep 0.25
end
end
live_loop :loopy do
if tracker[10] > 0 then
notes = (scale :e3, :minor_pentatonic).ring.reverse
sn = synth :prophet, note: :e1, release: 8, cutoff: 100
repeat = (ring 16,16, 8, 16, 8, 4, 2).look
repeat.times do
control sn, note: notes.tick
sleep 0.125
end
if look > 64 then
with_fx :krush do
play :e3, amp: 1, sustain: 4
tracker[10] = 0
end
end
sleep 0.25
else
sleep 1
end
end
kick=0
hats=1
rim=2
snare=3
drum=4
roll=5
intro1=6
xylo=7
loopy=10
comment do
# Very 80's... uncomment this one
# for an anthemic high... Oy Oy!
start_loop 10
sleep 8
start_loop 4
start_loop 0
start_loop 1
start_loop 3
sleep 8
start_loop 6
sleep 8
stop_loop 4
sleep 8
stop_loop 6
sleep 8
start_loop 7
sleep 8
end
uncomment do
# Just messing around with some other
# EDM-like sound effects...dont
# forget to uncomment/comment stuff.
start_loop 8
sleep 8
start_loop 9
sleep 8
start_loop 4
stop_loop 8
stop_loop 9
sleep 8
start_loop 0
sleep 4
start_loop 1
stop_loop 2
start_loop 3
start_loop 4
sleep 6
stop_all
start_loop 7
sleep 16
stop_loop 7
sleep 16
start_loop 6
sleep 32
stop_loop 6
sleep 32
stop
end