Slight warning: watch your speakers with this one…
Hope someone likes it, kinda …
# __________________________________________________________________________________
# -= Swooosh Del1ght by Aurolis - My first Sonic PI Track, sortof ... a ... track ? =-
# ----------------------------------------------------------------------------------
use_synth :tb303
use_bpm 68
B=0.5
#Cutoff knobby. Knobby who?
cutoff_facts=ring(0.6,0.7,0.8,0.9,0.8,0.7,0.6)
#Melody length =)
stretchy=(B+B/4+B/2+B/2+B/4+B/2)
#Dunno if there is a max function? There is now =)
define :threshold_cut do |n|
return n <= 130 ? n : 130
end
define :piper do |f|
with_fx :slicer, pulse_width: 0.4, probability: 1, amp:2 do
sample :loop_amen, beat_stretch: stretchy/f
end
end
define :m1 do |offset=0|
cur_cut=cutoff_facts.tick
play :C2+offset, cutoff: threshold_cut(80*cur_cut), release: 0.2, decay: 0.2
sleep B
play :Bb2+offset, cutoff: threshold_cut(90*cur_cut), release: 0.2
sleep B/4
play :C2+offset, cutoff: threshold_cut(80*cur_cut), release: 0.2, decay: 0.1
sleep B/2
play :Bb1+offset, cutoff: threshold_cut(70*cur_cut), release: 0.2
sleep B/2
play :C2+offset, cutoff: threshold_cut(90*cur_cut), release: 0.2
sleep B/4
play :Bb3+offset, cutoff: threshold_cut(90*cur_cut), release: 0.3
sleep B/2
end
define :m2 do |offset=0, end_note=true|
cur_cut=cutoff_facts.tick
play :C2+offset, cutoff: threshold_cut(80*cur_cut), release: 0.2
sleep B/4
play :D2+offset, cutoff: threshold_cut(80*cur_cut), release: 0.1
sleep B/4
play :Eb2+offset, cutoff: threshold_cut(90*cur_cut), release: 0.2
sleep B/4
play :G2+offset, cutoff: threshold_cut(90*cur_cut), release: 0.1
sleep B/4
play :G3+offset, cutoff: threshold_cut(90*cur_cut), release: 0.2
sleep B/4
play :C3+offset, cutoff: threshold_cut(90*cur_cut), release: 0.1
sleep B/4
play :D3+offset, cutoff: threshold_cut(90*cur_cut), release: 0.2
sleep B/4
play :Eb3+offset, cutoff: threshold_cut(90*cur_cut), release: 0.1
sleep B/4
play :G4+offset, cutoff: threshold_cut(90*cur_cut), release: 0.2
sleep B/4
play :G5+offset, cutoff: threshold_cut(90*cur_cut), release: 0.1
sleep B/4
play :C4+offset, cutoff: threshold_cut(90*cur_cut), release: 0.2
sleep B/4
play :D4+offset, cutoff: threshold_cut(90*cur_cut), release: 0.1
sleep B/4
if end_note
play :Eb5+offset, cutoff: threshold_cut(110*cur_cut), release: 0.2, decay: 0.8
end
end
define :m1_fx do |cnt,offset=0|
cnt.times do
sample :loop_amen,beat_stretch: stretchy
with_fx :bpf,mix: 0.1 do
m1(offset)
end
end
end
define :proceed do |offset=0,end_note=true|
sample :loop_amen,beat_stretch: stretchy
with_fx :bpf,mix: 0.1 do
m2(offset,end_note)
end
end
define :p1 do |cnt|
cnt.times do
m1_fx(2)
piper(4)
m1_fx(2)
piper(8)
m1_fx(2)
piper(2)
m1_fx(1)
proceed
end
end
define :p2 do |cnt|
cnt.times do
play :Eb5, cutoff: threshold_cut(80), release: 0.2, decay: 0.5
m1_fx(1)
play :D5, cutoff: threshold_cut(80), release: 0.2, decay: 0.3
m1_fx(1)
play :C5, cutoff: threshold_cut(80), release: 0.2, decay: 0.3
m1_fx(2)
end
end
define :p3 do |cnt|
cnt.times do
2.times do
play :Eb5, cutoff: threshold_cut(80), release: 0.2, decay: 0.5
m1_fx(1,5)
play :D5, cutoff: threshold_cut(80), release: 0.2, decay: 0.3
m1_fx(1,5)
play :C5, cutoff: threshold_cut(80), release: 0.2, decay: 0.3
m1_fx(2,5)
play :Eb6, cutoff: threshold_cut(80), release: 0.3, decay: 0.5
m1_fx(1,10)
play :D6, cutoff: threshold_cut(80), release: 0.4, decay: 0.3
m1_fx(1,10)
play :C6, cutoff: threshold_cut(80), release: 0.5, decay: 0.3
m1_fx(2,10)
play :D5, cutoff: threshold_cut(80), release: 0.5, decay: 0.3
m1_fx(1)
play :Bb4, cutoff: threshold_cut(80), release: 0.5, decay: 0.3
m1_fx(1)
play :C5, cutoff: threshold_cut(80), release: 0.5, decay: 0.3
m1_fx(1,5)
play :Eb5, cutoff: threshold_cut(80), release: 0.2, decay: 0.5
m1_fx(1,5)
play :G4, cutoff: threshold_cut(80), release: 0.5, decay: 0.3
play :Bb4, cutoff: threshold_cut(80), release: 0.5, decay: 0.3
play :D4, cutoff: threshold_cut(80), release: 0.5, decay: 0.3
m1_fx(2)
play :F4, cutoff: threshold_cut(80), release: 0.5, decay: 0.3
play :A4, cutoff: threshold_cut(80), release: 0.5, decay: 0.3
play :C3, cutoff: threshold_cut(80), release: 0.5, decay: 0.3
m1_fx(2)
play :Eb4, cutoff: threshold_cut(80), release: 0.5, decay: 0.3
play :G4, cutoff: threshold_cut(80), release: 0.5, decay: 0.3
play :Bb4, cutoff: threshold_cut(80), release: 0.5, decay: 0.3
m1_fx(2,5)
play :F4, cutoff: threshold_cut(80), release: 0.5, decay: 0.3
play :A4, cutoff: threshold_cut(80), release: 0.5, decay: 0.3
play :C5, cutoff: threshold_cut(80), release: 0.5, decay: 0.3
m1_fx(2,5)
end
play :D3, cutoff: threshold_cut(80), release: 0.5, decay: 0.3
play :F4, cutoff: threshold_cut(80), release: 0.5, decay: 0.3
play :Bb4, cutoff: threshold_cut(80), release: 0.5, decay: 0.3
m1_fx(2,10)
play :D3, cutoff: threshold_cut(80), release: 0.5, decay: 0.3
play :Gb4, cutoff: threshold_cut(80), release: 0.5, decay: 0.3
play :Bb4, cutoff: threshold_cut(80), release: 0.5, decay: 0.3
m1_fx(2,10)
play :Eb4, cutoff: threshold_cut(80), release: 0.5, decay: 0.3
play :G4, cutoff: threshold_cut(80), release: 0.5, decay: 0.3
play :Bb4, cutoff: threshold_cut(80), release: 0.5, decay: 0.3
m1_fx(2)
play :F4, cutoff: threshold_cut(80), release: 0.5, decay: 0.3
play :A4, cutoff: threshold_cut(80), release: 0.5, decay: 0.3
play :C5, cutoff: threshold_cut(80), release: 0.5, decay: 0.3
m1_fx(2,5)
play :D3, cutoff: threshold_cut(80), release: 0.5, decay: 0.3
play :F4, cutoff: threshold_cut(80), release: 0.5, decay: 0.3
play :Bb4, cutoff: threshold_cut(80), release: 0.5, decay: 0.3
m1_fx(2,19)
play :D3, cutoff: threshold_cut(80), release: 0.5, decay: 0.3
play :F4, cutoff: threshold_cut(80), release: 0.5, decay: 0.3
play :Bb4, cutoff: threshold_cut(80), release: 0.5, decay: 0.3
m1_fx(2,5)
play :D3, cutoff: threshold_cut(80), release: 0.5, decay: 0.3
play :F4, cutoff: threshold_cut(80), release: 0.5, decay: 0.3
play :Bb4, cutoff: threshold_cut(80), release: 0.5, decay: 0.3
m1_fx(3,10)
proceed(10,true)
end
end
with_fx :reverb,room: 1 do
p1(2)
p2(2)
p1(1)
p2(1)
p3(1)
end
cutoff_facts=ring(0.4,0.5,0.6,0.4,0.6,0.4,0.5)
with_fx :reverb,room: 1, damp: 0 do
with_fx :bitcrusher, bits:8, cutoff: 110 do
p3(1)
end
end