Phil wrote a bassline & turned it into a piano part, then decided to make it Palindromic … things went from there… ended up recording a “live bass” sample & chopping it up with the amazing Sonic Pi {slice: look, num_slices: s } (s being 10 in this track).
The Piano fades in with a ramp & starts with a heavy Vowel FX dissipating to “plain piano”
I tried using (ramp a, b, incs).look but didn’t sound the same as using my (verbose?) range(a, b, incs).ramp … anyway, it’s on soundcloud :
use_bpm 110
use_debug false
use_cue_logging false
# custom samples, sorry folks!
dRoot = "C:/Users/Phil/Documents/samples/the_drum_club/Yamaha RY-30/"
bassPart = "C:/Users/Phil/Documents/samples/bass_mono_1.wav"
bd1 = [1,1,0,0,0,0,0,0,0,2,0,0,0,0,0,0].ring
sn1 = [0,0,0,0,1,0,0,0,0,0,0,0,1,0,[2,3].sample,0].ring
ht1 = [1,0,2,0,1,0,2,0].ring
bds = [0, "Bassdrum-03", "Bassdrum-02"]
sns = [0, "Snare3", "Rimshot1", "Rimshot2"]
hts = [0, "Hat Pedal-01", "Hat Pedal-02"]
live_loop :drums do
tick
if look >= 128
a = range(1, 0, 0.001).ramp[look - 128]
else
a = range(0, 1, 0.001).ramp.look
end
# with the look value, we cycle through the drum arrays to play (or not) a sample pulled from the arrays referring to the different samples!
with_fx :level, amp: a do
if bd1.look != 0
with_fx :distortion, distort: 0.7 do
sample dRoot, bds[bd1.look]
end
end
if sn1.look != 0
sample dRoot, sns[sn1.look]
end
if ht1.look != 0
sample dRoot, hts[ht1.look]
end
sleep 0.5
end
end
bassNotes = [:g2, :d2, :as2, :c2, :d2, :as2, :a2, :c2, :ds2, :a2, :ds2, :g2, :a2, :as2].ring
lowNotes = [:g3, :a3, :as4, :ds3, :d3, :ds3, :a2, :a2, :ds3, :d3, :ds3, :as4, :a3, :g3].ring
topNotes = [:as4, :d4, :g3, :c4, :a4, :as4, :c4, :c4, :as4, :a4, :c4, :g3, :d4, :as4].ring
live_loop :piano do
tick
use_synth :piano
use_synth_defaults amp: 1.2, sustain: 0.1, decay: 0.4
puts "piano look = #{look}"
if look >= 100 and look <= 130
r = 2
s = 1
elsif look >= 0 and look < 100
r = 4
s = 0.5
else
r = 1
s = 16
end
with_fx :level, amp: range(0, 1, 0.01).ramp.look do
with_fx :vowel, mix: range(0.8, 0, 0.001).ramp.look, voice: [0,1,2,3,4].sample do
r.times do
with_fx :reverb, damp: 0.2, room: 0.4 do
play lowNotes.look, pan: 0.1
sleep s
play topNotes.look, pan: -0.1
sleep s
end
end
end
end
end
live_loop :synthBass do
tick
co = 140
use_synth :bass_foundation
if look >= co
use_synth_defaults amp: range(1, 0, 0.01)[co - look]
end
sleep 0.5
with_fx :distortion, distort: range(0, 0.4, 0.01).ramp.look do
with_fx :whammy, deltime: rand(), grainsize: rand(), max_delay_time: 1.22, mix: 0.4 do
play bassNotes.look, sustain: 2, decay: 6
tick
sleep 7.5
end
end
end
live_loop :bassLive do
tick
puts "new bass at #{look}"
s = 10.0
with_fx :ping_pong, feedback: 0.75, phase: 0.25, mix: 0.5 do
sample bassPart, amp: range(0.1, 0.7, 0.01).look, slice: look, num_slices: s
end
sleep 8
end