Greatly inspired yesterday by @alexesc’s ace method for drum patterns, and in my quest to use SPi as a general purpose live and recording instrument I wrote a general purpose drumkit script.
I’ve put this in 6/4, not to annoy you but coz that’s the track I’m working on just now. Four on the floor or boots and cats are great for sure, but c’mon there’s so many other great rhythms in the world and not just random ones ha ha
This is so much easier than working out all the individual sleeps, more in tune with how I think as a drummer. I’m still trying to find a similar good way with melodies - if you got any ideas please share.
btw in real use I’m putting in choices and probablities to mix it up, take elements in and out
#General purpose drum kit
use_bpm 120
define :pattern do |pattern|
return pattern.tick(:pattern) == "x"
end
live_loop :main do
sleep 6
cue :bar
end
with_fx :reverb do
with_fx :echo, mix: 0.1 do
live_loop :drumkit do
sync :bar
#Kick
a = 0.5
in_thread do
6.times do
sample :bd_ada, amp: a if pattern "x-----"
sleep 1
end
end
#Snare
a = 1.0
in_thread do
6.times do
sample :drum_snare_hard, amp: a if pattern "---x--"
sleep 1
end
end
#Pedal
a=0.4
in_thread do
6.times do
sample :drum_cymbal_pedal, amp: a*0.3 if pattern "-x--x-"
sleep 1
end
end
#Hihat
a=0.1
in_thread do
p1 = "-xx-x-xx-xx-"
p2 = "xx-xx-xx-xx-"
p3 = "-xx-xx-xx-xx"
p4 = "xxxxxxxxxxxx"
p = [p1,p2,p3,p4].choose
12.times do
ac=[1,2,1,1,1,2].ring
sample :drum_cymbal_soft, amp: a*ac.tick(:ac) if pattern p
sleep 0.5
end
end
#Hihat Open
a=0.02
in_thread do
12.times do
sample :drum_cymbal_open, amp: a, finish: 0.15 if pattern "-----------x"
sleep 0.5
end
end
#Percussion
a=0.2
with_fx :slicer do
sample :perc_bell, rate: 0.5, amp: a, release: 1.0
end
end #drumkit
end #echo
end #verb