Tip: Scroll down to line 148 to
/ on off melody voice here /
# 240602 0041 Massive attack Dissolved girl cover in Sonic Pi inspired by ixi
# Saved 240602 0041
# Created by https://linktr.ee/relaxnow
# My performance https://youtu.be/FHVVrppZHUM
# https://in-thread.sonic-pi.net/t/massive-attack-dissolved-girl-cover-in-sonic-pi-inspired-by-ixi/8908
# Inspiration
# Walkthrough by ixi https://www.youtube.com/watch?v=qNvOMT3fGLQ
# Massive attack dissolved girl https://youtu.be/ABQjT6gDKu0 (original)
# Massive Attack - Dissolved Girl - piano cover by vkgoeswild
# https://www.youtube.com/watch?v=be4eZzDyAjw
# Sheet notes https://pianokafe.com/music/massive-attack-dissolved-girl/
# Synthesia piano tutorial https://youtu.be/-rFc2SG02Qs
# Tip: Scroll down to line 148 to
/ on off melody voice here /
use_bpm 132
live_loop :drums do
tick
puts "-------" if spread(1,64).look
puts look if spread(1,16).look
a = line(0,1, steps: 32).ramp.look
# https://www.tutorialspoint.com/ruby/ruby_if_else.htm
if a < 0.96 #comes in after 64 ticks
sleep 0.5
else
/ kick /
sample :bd_haus, cutoff: 70+[0,3,6,-3,-6].choose+10, amp: [1.75,1,1].look+1 if bools(1,0,1,0, 0,1,0,0, 1,0,0,1, 0,0,0,0).look
/ snare /
sn_amp = 0
sn_amp = [1,1,1,1,1.5].look
sn = 1
sn = 64
snare = knit(0,sn,1,sn,5,sn,1,sn).look
/ low pitch snare/
sample :sn_dolf, finish: [0.125,0.125,0.75].choose, rate: [1,1,1,1,-1].look,rpitch: [0,0,12,24].look, amp: sn_amp, pan: rdist(0.5) if spread(snare,8).rotate(4).look
/ high pitch snare/
sample :sn_dub, finish: [0.125,0.125,0.75].choose, rate: [1,1,-1].look, rpitch: [0,0,12,24].look+12, amp: sn_amp, pan: rdist(0.25) if spread(snare,8).rotate(6).look
/ hihat /
sample :sn_dolf, finish: 0.0081+[0.0001,0.0003,-0.0001,-0.0003].choose, amp: [1,1,1.5].look+[0,0,0,1].choose+0.5, cutoff: 115+[0,0,0,15].choose #if spread(2,2).rotate(4).look
sleep 0.5
end
end
with_fx :reverb, room: 0.8 do
live_loop :fast_low_saw_synth do
tick
use_synth :saw
use_synth_defaults cutoff: 80, release: 0.25
n = [:f2].look
a = line(0,1, steps: 32).ramp.look
play n+[0,7,0,7].look, amp: a
sleep 0.5
end
live_loop :piano_top_arp do
tick
use_synth :piano
use_synth_defaults cutoff: 100, release: 0.25
n = [:f5].look
r = 64
amp_arp = knit(1,r, 0,r-1, 2,1).look # A bit of a mess here, not syncing
case amp_arp
when 0
a = 0
when 1
#a = line(0,1, steps: 32).ramp.look # 1.
a = line(0,1, steps: 64).ramp.look
when 2
a = 0
tick_reset # Trying to get fade in on arp again with tick_reset
end
play n+[5,-2,7-12].look, amp: a
sleep [0.5,1,0.5].look
end
live_loop :piano_long_notes do
tick
use_synth :piano
use_synth_defaults cutoff: 120, release: 1, sustain: 4
n = [:f3].look
amp = knit(0,6, 1,6).look
play n+knit(0,1,3,1).look, amp: amp, pan: 0.75
play n+knit(0,1,3,1).look+12, amp: amp, pitch: 0.01, pan: -0.75
sleep 8
end
with_fx :bitcrusher, mix: 0 do # 0.25 for more crush (not used right now)
live_loop :electrical_bass do
tick
a = line(0,1, steps: 32).ramp.look
# https://www.tutorialspoint.com/ruby/ruby_if_else.htm
if a < 0.625 #comes in after 32 ticks
#if look < 31 #comes in after 32 ticks
elbas_amp = 0
else
elbas_amp = 1
end
n = [:f2, :f2, nil, :bb2, :gs2,:gs2,:gs2,:f2, nil, :c1,
:f2, :f2, :g3,:bb2,:f3, :gs2,:gs2,:gs2,:f2, nil].look
use_synth :dsaw
use_synth_defaults cutoff: 90, release: 0.75, amp: elbas_amp
play [n].look, pan: -0.5, pitch: -12+0.125
use_synth :saw
play [n].look, pan: 0.5
s = 0.5
sleep [s*2,s*2, s,s*3, s,s,s,s,s*3,s,
s*2,s*2, s,s*2,s, s,s,s,s,s*4].look
end
end
with_fx :flanger, mix: 0.8 do
live_loop :voice do
tick
use_synth :beep
n = [:c5, :d5, :c5, :ds5, :g5, :gs5 ,:g5,:gs5, :g5, :ds5, :ds5, :f5, :c5].look
/ on off melody voice here /
amp_voice = 0.5 # on
amp_voice = 0 # off
play n, amp: amp_voice
s = 0.5
#16 0.5 1 8.5 = 16
# 1 1 0.5 1 1 1 1 1 = 7.5
# +0.5+8 = 16
sl = [s*12,s,s*2,s+8, s*2,s*2,s,s*2,s*2,s*2,s*2,s*2, s+s*16]
sleep sl.look
end
end
end