Skip to content

Instantly share code, notes, and snippets.

@rbnpi
Created December 28, 2014 20:03
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rbnpi/bd6f4b2c95603042b59f to your computer and use it in GitHub Desktop.
Save rbnpi/bd6f4b2c95603042b59f to your computer and use it in GitHub Desktop.
Bach Gigue in G Minor sample based version for Sonic Pi 2.2 or later (needs part 1 and samples)
#BachGigueInGMinor (part 2) coded by Robin Newman, December 2014
#sample based version. (two parts synced together: staret this part first, then part 1)
sync :part2
use_sample_pack '/Users/rbn/Desktop/samples/GrandPiano/' #select and adjust as necessary
#use_sample_pack '/home/pi/samples/GrandPiano'
#select loud (f) or soft (p) piano samples
#ps="piano_f_"
ps="piano_p_"
s=0
define :setbpm do |n| #set bpm equivalent
s = (1.0 / 8) *(60.0/n.to_f)
end
setbpm(180)
dsq=sq=q=qd=c=cd=cdd=m=md=0
define :lset do
dsq = 1 * s #demi-semi-quaver
sq = 2 * s #semi-quaver
q = 4 * s #quaver
qd = 6 * s #quaver dotted
c = 8 * s #crotchet
cd = 12 * s #crotchet dotted
m = 16 * s #minim
md = 24 * s #minim dotted
end
lset
p=0.15
mp=0.2
mf=0.4
f=0.8
ff=1.6
define :ct do |ptr,lev,slid=0|
control ptr,amp: lev,amp_slide: slid
end
ritq=ritqb=d1=d2=d3=d1b=d2b=d3b=n1=n2=n3=n1b=n2b=n3b=[] #define global scope
define :parts do
ritq=[q*1.02,q*1.04,q*1.06,q*1.08,q*1.1,q*1.12]
ritqb=[q*1.02,q*1.04,q*1.06,q*1.08,q*1.1,q*1.2,q*1.4,q*1.6,q*1.8]
n1=[:d5,:eb5,:d5,:c5,:bb4,:a4,:g4,:fs4,:a4,:d4,:c4,:bb3,:a3,:bb3,:d4,:g4,:a3,:g4,:fs4,:g4,:bb4,:a4,:bb4,:d5,:c5]
d1=[q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q]
#3
n1.concat [:d5,:e5,:f5,:e5,:f5,:g5,:a5,:g5,:f5,:g5,:f5,:e5,:f5,:g5,:a5,:d5,:c5,:bb4,:c5,:d5,:bb4,:c5]
d1.concat [cd+q,q,q,cd+q,q,q,q,q,q,q,q,q,q,q,q,cd+q,q,q,cd+c,q,c,q]
#6
n1.concat [:a4,:bb4,:c5,:d5,:bb4,:c5,:d5,:e5,:fs5,:g5,:a5,:g5,:f5,:e5,:f5,:eb5,:d5,:c5,:d5,:c5,:bb4,:a4,:bb4,:r,:a4,:r,:a4,:g4,:a4,:r,:e4,:g4]
d1.concat [c,q,c,q,c,q,cd+c,q,cd,cd,cd+cd,cd+q,q,q,cd+cd,cd+q,q,q,cd+cd,cd+q,q,q,cd,q,c,q,q,q,cd,q,q,q]
#12
n1.concat [:f4,:g4,:a4,:g4,:a4,:bb4,:a4,:d5,:f5,:g4,:g5,:e5,:f5,:a5,:g5,:a5,:a4,:cs5,:b4,:c5,:e5,:d5,:e5,:e4,:g4,:f4]
d1.concat [cd+q,q,q,cd+q,q,q,q,q,q,q,q,q,q,q,q,cd,q,q,q,q,q,q,cd,q,q,q]
#15
n1.concat [:g4,:bb4,:a4,:bb4,:cs4,:e4,:d4,:e4,:g4,:f4,:g4,:bb4,:a4,:bb4,:a4,:g4,:cs5,:bb4,:a4,:d5,:a4,:g4,:e5,:a4,:g4,:f4,:g4,:e4,:f4,:e4,:d4,:g4,:e4,:d4]
d1.concat [q,q,q,cd]+[q]*30
#18
n1.concat [:a4,:e4,:d4,:bb4,:e4,:d4,:cs4,:d4,:e4,:a3,:r,:a5,:bb5,:a5,:g5,:f5,:e5,:d5,:cs5,:e5,:a4,:g4,:f4,:e4,:f4,:a4,:d5,:e4,:d5,:cs5,:d5,:a4,:fs4,:d4]
d1.concat [q]*27+ritq+[c*1.12]
#end part 1
n2=[:r,:g4,:bb4,:a4,:g4,:f4,:e4,:d4,:cs4,:e4,:a3,:g3,:f3,:e3,:f3,:a3,:d4,:e3,:d4,:cs4,:d4,:e4,:f4,:e4,:fs4,:g4,:a4,:g4,:fs4,:g4,:fs4,:e4]
d2=[q*24]+[q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,cd+q,q,q,cd+q,q,q,q,q,q,q,q,q]
#6
n2.concat [:fs4,:e4,:d4,:e4,:g4,:fs4,:g4,:a4,:bb4,:a4,:bb4,:c5,:d5,:c5,:bb4,:c5,:bb4,:a4,:bb4,:a4,:g4,:f4,:eb4,:d4,:f4,:e4,:f4,:e4,:d4,:cs4,:b3,:cs4]
d2.concat [q,q,q,q,q,q,cd+q,q,q,cd+q,q,q,q,q,q,q,q,q,md,md,md,md,md,cd+q,q,q,c,q,cd+q,q,q,cd]
#12
n2.concat [:d4,:e4,:f4,:e4,:f4,:g4,:a4,:g4,:r]
d2.concat [cd+q,q,q,cd+q,q,q,cd,cd,cd*2+72*q+9.42*q+c*1.2] #rit at end
#end part 1
n3=[:r,:d4,:eb4,:d4,:c4,:bb3,:a3,:g3,:fs3,:a3,:d3,:c3,:bb2,:a2,:bb2,:d3,:g3,:a2,:g3,:fs3,:g3,:bb3,:a3,:bb3,:d4,:c4,:d4,:a3,:d3]
d3=[q+60*q+5*q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,cd+q,q,q]
#9
n3.concat [:eb3,:g3,:f3,:g3,:bb3,:a3,:bb3,:f3,:bb2,:c3,:eb3,:d3,:eb3,:g3,:f3,:g3,:cs3,:d3,:c3,:bb2,:c3,:bb2,:a2,:r,:a3]
d3.concat [q,q,q,q,q,q,cd+q,q,q,q,q,q,q,q,q,cd+c,q,c,q,sq,sq,c,cd,c,q]
#12
n3.concat [:bb3,:a3,:g3,:f3,:e3,:d3,:cs3,:e3,:a2,:g2,:g2,:e2,:f2,:a2,:d3,:e2,:d3,:cs3,:d3,:f3,:e3,:f3,:a3,:g3,:a3,:a2,:cs3,:b2,:cs3,:e3,:d3]
d3.concat [q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,cd+q,q,q,q,q,q,cd,q,q,q,q,q,q]
#15
n3.concat [:e3,:g3,:f3,:g3,:bb3,:a3,:bb3,:g3,:f3,:e3,:f3,:g3,:a2,:r,:b2,:r,:cs3,:a2,:b2,:cs3,:d3,:r,:e3,:r]
d3.concat [cd+q,q,q,cd+q,q,q,q,q,q,q,q,q,c,q,c,q,c,q,c,q,c,q,c,q]
#18
n3.concat [:f3,:r,:g3,:f3,:e3,:f3,:cs4,:d4,:g3,:cs4,:d4,:gs3,:cs4,:d4,:a3,:cs4,:d4,:e4,:d4,:cs4,:d4,:f3,:g3,:a3,:g3,:a3,:d3,:fs3,:a3,:d4]
d3.concat [c,q,cd+q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q]+ritq+[c*1.12]
#end part1
n1b=[:a3,:fs3,:g3,:a3,:bb3,:c4,:d4,:eb4,:c4,:g4,:a4,:bb4,:c5,:bb4,:g4,:d4,:c5,:e4,:fs4,:g4,:e4,:f4,:e4,:cs4,:d4,:a4,:g4,:f4,:g4,:f4,:e4]
d1b=[q]*25+[cd+q,q,q,cd+q,q,q]
#24
n1b.concat [:d4,:e4,:f4,:e4,:a4,:g4,:f4,:eb4,:d4,:bb4,:a4,:g4,:a4,:g4,:fs4,:g4,:eb5,:f4,:d5,:r,:g4,:fs4,:g4,:a4,:bb4,:c5,:d5,:eb5,:c5,:g5,:a5,:bb5,:c6,:bb5,:g5,:d5,:c6,:e5,:fs5,:g5,:d5,:eb5,:f5,:c5,:d5]
d1b.concat [q,q,q,q,q,q,q,q,q,cd+q,q,q,q,q,q,c,q,c,q,11*q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q]
#29
n1b.concat [:eb5,:f5,:e5,:f5,:e5,:d5,:e5,:f5,:c5,:d5,:eb5,:bb4,:c5,:d5,:a4,:bb4,:c5,:g4,:a4,:bb4,:g5,:ab4,:f5,:g4,:eb5,:f4,:d5,:eb4,:f4,:g4,:d4,:eb4,:c4]
d1b.concat [cd,sq,sq,sq,sq,sq,sq,q,q,q,q,q,q,q,q,q,q,q,q,c,q,c,q,c,q,c,q,q,q,q,q,q,q]
#32
n1b.concat [:b3,:c4,:d4,:eb4,:f4,:g4,:ab4,:f4,:c5,:d5,:eb5,:f5,:g5,:eb5,:c5,:f5,:a4,:b4,:eb5,:c5,:a4,:d5,:fs4,:g4,:c5,:a4,:fs4,:bb4,:d4,:eb4,:a4,:f4,:d4,:g4,:bb3,:c4]
d1b.concat [q]*36
#35
n1b.concat [:d4,:e4,:fs4,:g4,:a4,:bb4,:c5,:d5,:eb5,:d5,:bb5,:eb5,:d5,:c5,:bb4,:g5,:c5,:bb4,:ab4,:g4,:eb5,:ab4,:g4,:f4,:eb4,:c5,:eb4,:d4,:c5,:bb4,:c4,:bb4,:a4,:d4,:c5,:bb4,:e4,:d5,:c5,:fs4,:eb5,:d5]
d1b.concat [cd+q,q,q,q,q,q,q,q,q,c,q,q,q,q,c,q,q,q,q,c,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q]
#39
n1b.concat [:g4,:c5,:bb4,:a4,:bb4,:g4,:fs4,:eb4,:d4,:g4,:d4,:c4,:a4,:d4,:c4,:bb3,:c4,:a3,:bb3,:a3,:g3,:c4,:a3,:g3,:d4,:a3,:g3,:eb4,:a3,:g3,:fs3,:g3,:a3,:bb3,:c4,:d4]
d1b.concat [q]*3*12
#42
n1b.concat [:eb4,:c4,:g4,:a4,:bb4,:c5,:d5,:bb4,:g4,:c5,:e4,:fs4,:g4,:d5,:g5,:f5,:eb5,:d5,:c5,:bb4,:a4,:g4,:fs4,:g4,:eb5,:d5,:bb4,:c5,:bb4,:a4,:g4,:g4,:d4,:bb3,:g3]
d1b.concat [q]*12+[c]+[q]*10+ritqb[0..2]+[dsq*1.08,dsq*1.08,sq*1.08]+ritqb[4..-1]+[c*1.2]
#end part 2
n2b=[:r,:eb4,:d4,:c4,:d4,:c4,:bb3,:c4,:a4,:bb3,:c4,:d4,:c4,:bb3,:c4,:bb3,:a3,:g3,:a3,:bb3,:c4,:bb3,:c4,:b3,:c4,:b3,:a3,:b3,:r]
d2b=[q*61,q,q,q,q,q,q,c,q,c,q,cd+q,q,q,cd+q,q,q,cd,q,q,q,cd,sq,sq,sq,sq,sq,sq,q*12*15+11.3*q+c*1.2]
#end part 2
n3b = [:r,:d2,:cs2,:d2,:e2,:f2,:g2,:a2,:bb2,:g2,:d3,:e3,:f3,:g3,:f3,:d3,:a2,:g3,:b2,:cs3,:d3,:c3,:bb2,:c3,:d3,:eb3,:d3,:c3,:d3,:c3,:b2]
d3b = [q*24,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,q,cd+q,q,q,cd+c,q,q,q,q,q,q,q]
#26
n3b.concat [:c3,:a3,:bb2,:g3,:a3,:g3,:fs3,:g3,:f3,:eb3,:d3,:e3,:fs3,:g3,:a3,:bb3,:fs3,:g3,:eb3,:c3,:d3,:g3,:c4,:g3,:a3,:bb3,:f3,:g3,:a3,:f3,:g3,:a3]
d3b.concat [c,q,c,q,q,q,q,q,q,q,q,q,q,cd+q,q,q,cd,c,q,c,q,md,q,q,q,q,q,q,c,q,c,q]
#30
n3b.concat [:bb3,:fs3,:g3,:a3,:e3,:f3,:g3,:d3,:eb3,:f3,:c3,:d3,:eb3,:b2,:c3,:d3,:a2,:b2,:c3,:d3,:eb3,:f3,:g3,:ab3,:g3,:a3,:b3,:c3,:d3,:eb3,:f3,:g3,:ab3,:b2,:c3,:d3]
d3b.concat [q]*12*3
#33
n3b.concat [:eb3,:ab3,:d3,:g3,:c3,:r,:bb3,:a3,:r,:g3,:f3,:r,:eb3,:fs2,:g2,:a2,:bb2,:c3,:d3,:eb3,:c3,:g3,:a3,:bb3,:c3]
d3b.concat [c,q,c,q,c,cd,q,cd,c,q,cd,c,q,q,q,q,q,q,q,q,q,q,q,q,q]
#36
n3b.concat [:bb3,:g3,:d3,:c4,:e3,:fs3,:g3,:d3,:bb2,:ab3,:c3,:d3,:eb3,:bb2,:g2,:f3,:a2,:b2,:c3,:r,:g2,:r,:e2,:r,:fs2,:r,:g2,:r,:a2,:r]
d3b.concat [q]*18+[c,q,c,q,c,q,c,q,c,q,c,q]
#39
n3b.concat [:bb2,:r,:c3,:r,:d3,:r,:e3,:r,:fs3,:d2,:e2,:fs2,:g2,:r,:a2,:r,:bb2,:r,:c3,:r,:d3,:e3,:fs3,:g2,:a2,:bb2]
d3b.concat [c,q,c,q,c,q,c,q,c,q,c,q,c,q,c,q,c,q,c,q,q,q,q,q,q,q]
#42
n3b.concat [:c3,:d3,:eb3,:fs2,:g2,:a2,:bb2,:eb3,:a2,:d4,:eb4,:d4,:c4,:bb3,:a3,:g3,:fs3,:a3,:d3,:c3,:bb2,:a2,:bb2,:g3,:c3,:d3,:c3,:d3,:g2,:bb2,:d3,:g3]
d3b.concat [q,q,q,q,q,q,c,q,c,q]+[q]*12+ritqb+[c*1.2]
end
define :part1 do
with_fx :level do |x|
in_thread do
ct(x,mf,0)
sleep 13*q
ct(x,mp,6*q)
sleep 6*q
ct(x,mf,6*q)
sleep 30*q #5
ct(x,p,12*q)
sleep 12*q
ct(x,f,6*q)
sleep 3*12*q+3*q #4th 9
ct(x,p,15*q) #end at 11
sleep 15*q+2*q
ct(x,f,22*q) #end at 13
sleep 34*q #till 14
ct(x,ff,6*q)
sleep 6*q
ct(x,f,3*q)
sleep 3*q
ct(x,ff,6*q)
sleep 6*q
ct(x,f,3*q)
sleep 3*q
ct(x,ff,18*q)
sleep 18*q
ct(x,f,6*q)
sleep 6*q #end mid 17
ct(x,ff,9*q)
sleep 9*q
ct(x,f,8*q)
sleep 8*q
ct(x,ff,0) #last q of 18
sleep 25*q
end
in_thread do
plarray(n1,d1)
end
in_thread do
plarray(n2,d2)
end
plarray(n3,d3)
end
end
define :part2 do
with_fx :level do |x|
in_thread do
ct(x,mf,0)
sleep 25*q #end at start 23
ct(x,f,47*q) #end last q of 26
sleep 82*q #till last beat 22
ct(x,mf,21*q) #till 24 3rd beat
sleep 29*q #until 3rd q 25
ct(x,f,10) #till start 26
sleep 16*q
ct(x,p,18*q) #to last q 27
sleep 21*q
ct(x,f,9*q) #to start 29
sleep 18*q
ct(x,mf,9*q)
sleep 15*q
ct(x,f,12*q) #end 31
sleep 12*q
ct(x,mf,6)
sleep 9*q
ct(x,f,3*q)
sleep 3*q
ct(x,p,6*q)
sleep 10*q
ct(x,f,25*q)
sleep 32*q
ct(x,mf,17*q)
end
in_thread do
plarray(n1b,d1b)
end
in_thread do
plarray(n2b,d2b)
end
plarray(n3b,d3b)
end
end
parts
part1
part1
part2
setbpm(170)
lset
parts
part2
@rbnpi
Copy link
Author

rbnpi commented Dec 28, 2014

This file is used with part 1 and a folder of GrandPiano samples. Part1 is in a separate gist file. The samples can be downloaded from my blog http://rbnrpi.wordpress.com Samples from Sonatina Symphonic Library under CCL1
https://rbnrpi.wordpress.com/2014/12/28/sonic-pi-2-2-plays-bach-gigue-in-g-minor-three-separate-versions/
A separate gist file contains a separate self contained version that plays on the :pulse synth.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment