Skip to content

Instantly share code, notes, and snippets.

@rbnpi
Last active September 3, 2020 18:49
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/a101149f6d722c62ddfb1a11c654b278 to your computer and use it in GitHub Desktop.
Save rbnpi/a101149f6d722c62ddfb1a11c654b278 to your computer and use it in GitHub Desktop.
The Farie Round (Galliard) by Antony Holborne 1545-1602 coded for Sonic PI Sept 2020. Hear it on https://soundcloud.com/rbnsonicpi/fairie-round
#The_Fairie_Round-RF.rb
#A Galliard by Antony Holborne 1545 – 1602
#coded for Sonic Pi by Robin Newman, September 2020
#play using run_file "path/to/The_Farie_Round-RF.rb"
use_bpm 198
with_fx :reverb,room: 0.8, mix: 0.7 do
with_fx :level,amp: 0.95 do |v|
set :v,v
r=0.075 #release fraction
in_thread do
at [8*6,16*6,24*6,32*6,40*6,48*6],[0.6,0.9,0.5,0.9,0.4,0.95]do |a|
tick #count number of times "at" activated
slide=0 #normally change volume straight away
slide=36 if look==5 #do a crescendo rather than quick change last time
control get(:v),amp: a,amp_slide: slide #control the volume at set times in the piece
end
end
use_synth :tri
a1=[:G6,:E6,:C6,:A5,:D6,:B5,:G5,:C6,:A5,:D6,:C6,:B5,:C6,:B5,:A5,:G5,:E6,:D6,:C6,:B5,:C6,:F6,:E6,:D6,:C6,:B5,:G5,:C6,:B5,:C6,:C6,:C6,:C6,:G6,:E6,:C6,:A5,:D6,:B5,:G5,:C6,:A5,:D6,:C6,:B5,:C6,:B5,:A5,:G5,:E6,:D6,:C6,:B5,:C6,:F6,:E6,:D6,:C6,:B5,:G5,:C6,:B5,:C6,:C6,:C6,:C6,:G5,:A5,:B5,:C6,:B5,:A5,:G5,:A5,:G5,:F6,:E6,:D6,:C6,:B5,:C6,:B5,:A5,:G5,:E6,:D6,:E6,:F6,:E6,:D6,:C6,:C6,:E6,:D6,:C6,:B5,:B5,:B5,:B5,:G5,:A5,:B5,:C6,:B5,:A5,:G5,:A5,:G5,:F6,:E6,:D6,:C6,:B5,:C6,:B5,:A5,:G5,:E6,:D6,:E6,:F6,:E6,:D6,:C6,:C6,:E6,:D6,:C6,:B5,:B5,:B5,:B5,:G6,:G5,:B5,:C6,:D6,:G5,:D6,:E6,:F6,:E6,:D6,:C6,:B5,:E5,:F5,:G5,:A5,:F5,:G5,:A5,:B5,:A5,:G5,:A5,:B5,:C6,:A5,:B5,:C6,:D6,:C6,:B5,:G5,:C6,:B5,:C6,:C6,:C6,:C6,:G6,:G5,:B5,:C6,:D6,:G5,:D6,:E6,:F6,:E6,:D6,:C6,:B5,:E5,:F5,:G5,:A5,:F5,:G5,:A5,:B5,:A5,:G5,:A5,:B5,:C6,:A5,:B5,:C6,:D6,:C6,:B5,:G5,:C6,:B5,:C6,:C6,:C6,:C6,:G6,:E6,:C6,:A5,:D6,:B5,:G5,:C6,:A5,:D6,:C6,:B5,:C6,:B5,:A5,:G5,:E6,:D6,:C6,:B5,:C6,:F6,:E6,:D6,:C6,:B5,:G5,:C6,:B5,:C6,:C6,:C6]
b1=[2.0,1.0,2.0,1.0,2.0,1.0,2.0,1.0,3.0,1.5,0.5,1.0,1.5,0.5,1.0,2.0,1.0,2.0,1.0,2.0,1.0,2.0,1.0,2.0,1.0,1.0,1.0,3.0,1.0,2.0,1.0,2.0,1.0,2.0,1.0,2.0,1.0,2.0,1.0,2.0,1.0,3.0,1.5,0.5,1.0,1.5,0.5,1.0,2.0,1.0,2.0,1.0,2.0,1.0,2.0,1.0,2.0,1.0,1.0,1.0,3.0,1.0,2.0,1.0,2.0,1.0,1.0,1.0,1.0,1.5,0.5,1.0,2.0,1.0,2.0,1.0,2.0,1.0,2.0,1.0,1.5,0.5,1.0,2.0,1.0,2.0,2.0,1.0,1.0,4.0,2.0,1.0,1.0,2.0,2.0,2.0,1.0,2.0,1.0,1.0,1.0,1.0,1.5,0.5,1.0,2.0,1.0,2.0,1.0,2.0,1.0,2.0,1.0,1.5,0.5,1.0,2.0,1.0,2.0,2.0,1.0,1.0,4.0,2.0,1.0,1.0,2.0,2.0,2.0,1.0,2.0,1.0,2.0,1.0,2.0,1.0,2.0,1.0,2.0,1.0,3.0,1.0,1.0,1.0,6.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,0.5,0.5,1.0,0.5,0.5,1.0,1.0,0.5,0.5,0.5,0.5,1.0,1.0,3.0,1.0,2.0,1.0,2.0,1.0,2.0,1.0,2.0,1.0,2.0,1.0,2.0,1.0,3.0,1.0,1.0,1.0,6.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,0.5,0.5,1.0,0.5,0.5,1.0,1.0,0.5,0.5,0.5,0.5,1.0,1.0,3.0,1.0,2.0,1.0,2.0,1.0,2.0,1.0,2.0,1.0,2.0,1.0,2.0,1.0,3.0,1.5,0.5,1.0,1.5,0.5,1.0,2.0,1.0,2.0,1.0,2.0,1.0,2.0,1.0,2.0,1.0,1.0,1.0,3.0,1.0,2.0,1.0,3.0]
in_thread do
for i in 0..a1.length-1
play a1[i],sustain: b1[i]*0.9,release: b1[i]*r,pan: -0.6,amp: 0.33
sleep b1[i]
end
end
a2=[:G5,:C6,:A5,:F5,:D5,:D5,:G5,:F5,:A5,:G5,:G5,:F5,:E5,:G5,:G5,:F5,:E5,:D5,:G5,:A5,:B5,:C6,:A5,:G5,:G5,:G5,:G5,:G5,:E5,:G5,:C6,:A5,:F5,:D5,:D5,:G5,:F5,:A5,:G5,:G5,:F5,:E5,:G5,:G5,:F5,:E5,:D5,:G5,:A5,:B5,:C6,:A5,:G5,:G5,:G5,:G5,:G5,:E5,:E5,:F5,:G5,:C5,:D5,:E5,:F5,:G5,:E5,:A5,:B5,:G5,:A5,:G5,:F5,:E5,:E5,:C5,:D5,:E5,:F5,:G5,:G5,:G5,:D6,:C6,:B5,:A5,:G5,:G5,:G5,:G5,:Fs5,:G5,:G5,:G5,:G5,:E5,:F5,:G5,:C5,:D5,:E5,:F5,:G5,:E5,:A5,:B5,:G5,:A5,:G5,:F5,:E5,:E5,:C5,:D5,:E5,:F5,:G5,:G5,:G5,:D6,:C6,:B5,:A5,:G5,:G5,:G5,:G5,:Fs5,:G5,:G5,:G5,:G5,:G5,:D5,:G5,:E5,:D5,:D5,:G5,:G5,:F5,:G5,:A5,:B5,:C6,:A5,:G5,:F5,:E5,:D5,:C5,:D5,:E5,:D5,:E5,:F5,:E5,:F5,:G5,:F5,:A5,:G5,:G5,:G5,:G5,:E5,:E5,:E5,:E5,:G5,:D5,:G5,:E5,:D5,:D5,:G5,:G5,:F5,:G5,:A5,:B5,:C6,:A5,:G5,:F5,:E5,:D5,:C5,:D5,:E5,:D5,:E5,:F5,:E5,:F5,:G5,:F5,:A5,:G5,:G5,:G5,:G5,:E5,:E5,:E5,:E5,:r,:F5,:A5,:G5,:G5,:F5,:E5,:G5,:G5,:F5,:E5,:D5,:G5,:A5,:B5,:C6,:A5,:G5,:G5,:G5,:G5,:G5,:E5]
b2=[2.0,2.0,1.0,2.0,2.0,1.0,2.0,2.0,2.0,2.0,2.0,1.0,2.0,1.0,1.5,0.5,1.0,2.0,1.0,1.0,1.0,1.0,2.0,1.0,2.0,1.0,1.0,2.0,6.0,2.0,2.0,1.0,2.0,2.0,1.0,2.0,2.0,2.0,2.0,2.0,1.0,2.0,1.0,1.5,0.5,1.0,2.0,1.0,1.0,1.0,1.0,2.0,1.0,2.0,1.0,1.0,2.0,6.0,2.0,1.0,2.0,0.5,0.5,2.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,2.0,1.0,1.0,1.0,0.5,0.5,1.5,0.5,1.0,2.0,2.0,1.0,1.0,1.0,1.0,2.0,2.0,2.0,3.0,1.0,2.0,1.0,2.0,1.0,2.0,1.0,2.0,0.5,0.5,2.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,2.0,1.0,1.0,1.0,0.5,0.5,1.5,0.5,1.0,2.0,2.0,1.0,1.0,1.0,1.0,2.0,2.0,2.0,3.0,1.0,2.0,1.0,2.0,1.0,2.0,1.0,2.0,1.0,2.0,1.0,2.0,1.0,0.5,0.5,0.5,0.5,2.0,2.0,3.0,0.5,0.5,2.0,1.5,0.5,1.0,1.5,0.5,1.0,1.5,0.5,1.0,2.0,1.0,2.0,1.0,1.0,2.0,2.0,1.0,2.0,1.0,2.0,1.0,2.0,1.0,2.0,1.0,2.0,1.0,0.5,0.5,0.5,0.5,2.0,2.0,3.0,0.5,0.5,2.0,1.5,0.5,1.0,1.5,0.5,1.0,1.5,0.5,1.0,2.0,1.0,2.0,1.0,1.0,2.0,2.0,1.0,2.0,1.0,12.0,2.0,2.0,2.0,2.0,1.0,2.0,1.0,1.5,0.5,1.0,2.0,1.0,1.0,1.0,1.0,2.0,1.0,2.0,1.0,1.0,2.0,6.0]
in_thread do
for i in 0..a2.length-1
play a2[i],sustain: b2[i]*0.9,release: b2[i]*r,pan: -0.2,amp: 0.25
sleep b2[i]
end
end
a3=[:E5,:G5,:E5,:C5,:D5,:F5,:G5,:D5,:E5,:A4,:A5,:F5,:E5,:D5,:E5,:C5,:C5,:D5,:G5,:D5,:E5,:A4,:D5,:G5,:F5,:E5,:D5,:E5,:D5,:C5,:E5,:G5,:E5,:C5,:D5,:F5,:G5,:D5,:E5,:A4,:A5,:F5,:E5,:D5,:E5,:C5,:C5,:D5,:G5,:D5,:E5,:A4,:D5,:G5,:F5,:E5,:D5,:E5,:D5,:C5,:C5,:B4,:G4,:A4,:B4,:C5,:C5,:C5,:G5,:F5,:G5,:D5,:E5,:D5,:C5,:C5,:G4,:C5,:D5,:C5,:E5,:D5,:C5,:B4,:A4,:G4,:A4,:B4,:C5,:D5,:B4,:C5,:D5,:D5,:D5,:D5,:C5,:B4,:G4,:A4,:B4,:C5,:C5,:C5,:G5,:F5,:G5,:D5,:E5,:D5,:C5,:C5,:G4,:C5,:D5,:C5,:E5,:D5,:C5,:B4,:A4,:G4,:A4,:B4,:C5,:D5,:B4,:C5,:D5,:D5,:D5,:D5,:D5,:B4,:D5,:C5,:B4,:D5,:D5,:G4,:D5,:G5,:F5,:E5,:D5,:E5,:D5,:C5,:B4,:G4,:A4,:B4,:C5,:A4,:B4,:C5,:D5,:C5,:B4,:C5,:D5,:E5,:C5,:D5,:E5,:F5,:E5,:D5,:E5,:D5,:C5,:C5,:C5,:C5,:D5,:B4,:D5,:C5,:B4,:D5,:D5,:G4,:D5,:G5,:F5,:E5,:D5,:E5,:D5,:C5,:B4,:G4,:A4,:B4,:C5,:A4,:B4,:C5,:D5,:C5,:B4,:C5,:D5,:E5,:C5,:D5,:E5,:F5,:E5,:D5,:E5,:D5,:C5,:C5,:C5,:C5,:r,:D5,:F5,:G5,:D5,:E5,:A4,:A5,:F5,:E5,:D5,:E5,:C5,:C5,:D5,:G5,:D5,:E5,:A4,:D5,:G5,:F5,:E5,:D5,:E5,:D5,:C5]
b3=[2.0,1.0,1.0,2.0,1.0,1.0,1.0,1.0,2.0,1.0,1.0,1.5,0.5,2.0,2.0,2.0,2.0,2.0,1.0,2.0,1.0,1.0,1.0,1.0,2.0,1.0,2.0,2.0,2.0,6.0,2.0,1.0,1.0,2.0,1.0,1.0,1.0,1.0,2.0,1.0,1.0,1.5,0.5,2.0,2.0,2.0,2.0,2.0,1.0,2.0,1.0,1.0,1.0,1.0,2.0,1.0,2.0,2.0,2.0,6.0,2.0,1.0,2.0,0.5,0.5,2.0,1.0,1.0,1.0,1.0,2.0,1.0,2.0,1.0,1.0,2.0,1.0,2.0,2.0,1.0,1.0,3.0,1.0,1.0,1.0,1.0,0.5,0.5,2.0,1.0,1.0,2.0,2.0,1.0,2.0,1.0,2.0,1.0,2.0,0.5,0.5,2.0,1.0,1.0,1.0,1.0,2.0,1.0,2.0,1.0,1.0,2.0,1.0,2.0,2.0,1.0,1.0,3.0,1.0,1.0,1.0,1.0,0.5,0.5,2.0,1.0,1.0,2.0,2.0,1.0,2.0,1.0,2.0,1.0,2.0,1.0,2.0,1.0,2.0,1.0,2.0,2.0,1.0,1.0,2.0,1.0,0.5,0.5,2.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,0.5,0.5,1.0,0.5,0.5,1.0,1.0,0.5,0.5,0.5,0.5,2.0,2.0,2.0,2.0,1.0,2.0,1.0,2.0,1.0,2.0,1.0,2.0,1.0,2.0,1.0,2.0,2.0,1.0,1.0,2.0,1.0,0.5,0.5,2.0,1.0,0.5,0.5,1.0,1.0,0.5,0.5,0.5,0.5,1.0,0.5,0.5,1.0,1.0,0.5,0.5,0.5,0.5,2.0,2.0,2.0,2.0,1.0,2.0,1.0,6.0,1.0,1.0,1.0,1.0,2.0,1.0,1.0,1.5,0.5,2.0,2.0,2.0,2.0,2.0,1.0,2.0,1.0,1.0,1.0,1.0,2.0,1.0,2.0,2.0,2.0,6.0]
in_thread do
for i in 0..a3.length-1
play a3[i],sustain: b3[i]*0.9,release: b3[i]*r,pan: 0.2,amp: 0.25
sleep b3[i]
end
end
a4=[:G4,:G4,:A4,:A4,:B4,:C5,:A4,:A4,:B4,:C5,:D5,:C5,:G4,:A4,:B4,:C5,:G4,:G4,:G4,:A4,:B4,:G4,:D5,:G4,:A4,:B4,:C5,:D5,:G4,:G4,:G4,:G4,:G4,:A4,:A4,:B4,:C5,:A4,:A4,:B4,:C5,:D5,:C5,:G4,:A4,:B4,:C5,:G4,:G4,:G4,:A4,:B4,:G4,:D5,:G4,:A4,:B4,:C5,:D5,:G4,:G4,:G4,:r,:r,:G4,:A4,:B4,:C5,:B4,:A4,:C5,:E5,:D5,:C5,:B4,:A4,:B4,:C5,:F4,:G4,:A4,:B4,:C5,:G4,:G4,:C5,:A4,:B4,:C5,:D5,:r,:r,:G4,:G4,:C4,:G4,:G4,:G4,:G4,:r,:r,:G4,:A4,:B4,:C5,:B4,:A4,:C5,:E5,:D5,:C5,:B4,:A4,:B4,:C5,:F4,:G4,:A4,:B4,:C5,:G4,:G4,:C5,:A4,:B4,:C5,:D5,:r,:r,:G4,:G4,:C4,:G4,:G4,:G4,:G4,:B4,:C5,:D5,:B4,:G4,:G4,:A4,:B4,:C5,:D5,:C5,:B4,:A4,:G4,:A4,:B4,:G4,:G4,:E4,:A4,:D4,:G4,:A4,:B4,:C5,:D5,:G4,:G4,:G4,:G4,:B4,:C5,:D5,:B4,:G4,:G4,:A4,:B4,:C5,:D5,:C5,:B4,:A4,:G4,:A4,:B4,:G4,:G4,:E4,:A4,:D4,:G4,:A4,:B4,:C5,:D5,:G4,:G4,:G4,:G4,:r,:C5,:G4,:A4,:B4,:C5,:G4,:G4,:G4,:A4,:B4,:G4,:D5,:G4,:A4,:B4,:C5,:D5,:G4,:G4]
b4=[2.0,2.0,2.0,2.0,2.0,3.0,2.0,1.0,0.5,0.5,1.0,1.0,1.0,0.5,0.5,1.0,2.0,2.0,1.5,0.5,1.0,1.0,2.0,1.0,1.5,0.5,1.0,2.0,4.0,4.0,2.0,2.0,2.0,2.0,2.0,2.0,3.0,2.0,1.0,0.5,0.5,1.0,1.0,1.0,0.5,0.5,1.0,2.0,2.0,1.5,0.5,1.0,1.0,2.0,1.0,1.5,0.5,1.0,2.0,4.0,4.0,2.0,3.0,1.0,1.0,0.5,0.5,1.5,0.5,1.0,1.5,0.5,1.5,0.5,1.0,0.5,0.5,2.0,1.0,2.0,0.5,0.5,2.0,1.0,3.0,1.0,2.0,1.0,1.0,2.0,1.0,1.0,2.0,2.0,2.0,2.0,1.0,2.0,1.0,3.0,1.0,1.0,0.5,0.5,1.5,0.5,1.0,1.5,0.5,1.5,0.5,1.0,0.5,0.5,2.0,1.0,2.0,0.5,0.5,2.0,1.0,3.0,1.0,2.0,1.0,1.0,2.0,1.0,1.0,2.0,2.0,2.0,2.0,1.0,2.0,1.0,1.5,0.5,1.0,1.0,2.0,1.5,0.5,1.5,0.5,1.0,0.5,0.5,2.0,2.0,2.0,2.0,4.0,2.0,1.0,1.0,2.0,3.0,3.0,2.0,2.0,2.0,2.0,1.0,2.0,1.0,1.5,0.5,1.0,1.0,2.0,1.5,0.5,1.5,0.5,1.0,0.5,0.5,2.0,2.0,2.0,2.0,4.0,2.0,1.0,1.0,2.0,3.0,3.0,2.0,2.0,2.0,2.0,1.0,2.0,1.0,18.0,1.0,1.0,0.5,0.5,1.0,2.0,2.0,1.5,0.5,1.0,1.0,2.0,1.0,1.5,0.5,1.0,2.0,4.0,6.0]
in_thread do
for i in 0..a4.length-1
play a4[i],sustain: b4[i]*0.9,release: b4[i]*r,pan: 0.6,amp: 0.25
sleep b4[i]
end
end
a5=[:C4,:C4,:F4,:D4,:G4,:E4,:F4,:D4,:G4,:C4,:F4,:C4,:C4,:B3,:C4,:G4,:F4,:E4,:D4,:E4,:F4,:C4,:G4,:E4,:C4,:G4,:G3,:C4,:C4,:C4,:F4,:D4,:G4,:E4,:F4,:D4,:G4,:C4,:F4,:C4,:C4,:B3,:C4,:G4,:F4,:E4,:D4,:E4,:F4,:C4,:G4,:E4,:C4,:G4,:G3,:C4,:C4,:D4,:E4,:C4,:F4,:E4,:C4,:F4,:E4,:C4,:D4,:G4,:F4,:E4,:C4,:D4,:E4,:C4,:F4,:E4,:C4,:B3,:C4,:B3,:G4,:F4,:E4,:D4,:C4,:B3,:G3,:A3,:G3,:G3,:G3,:G3,:C4,:D4,:E4,:C4,:F4,:E4,:C4,:F4,:E4,:C4,:D4,:G4,:F4,:E4,:C4,:D4,:E4,:C4,:F4,:E4,:C4,:B3,:C4,:B3,:G4,:F4,:E4,:D4,:C4,:B3,:G3,:A3,:G3,:G3,:G3,:G3,:G3,:G3,:G3,:G3,:G3,:G3,:G3,:C4,:D4,:E4,:F4,:G4,:G3,:G3,:C4,:D4,:E4,:F4,:G4,:E4,:C4,:G4,:G3,:C4,:C4,:C4,:C4,:G3,:G3,:G3,:G3,:G3,:G3,:G3,:C4,:D4,:E4,:F4,:G4,:G3,:G3,:C4,:D4,:E4,:F4,:G4,:E4,:C4,:G4,:G3,:C4,:C4,:C4,:C4,:r,:F4,:D4,:G4,:C4,:F4,:C4,:C4,:B3,:C4,:G4,:F4,:E4,:D4,:E4,:F4,:C4,:G4,:E4,:C4,:G4,:G3,:C4]
b5=[2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,1.0,2.0,1.0,2.0,1.0,1.5,0.5,1.0,2.0,1.0,2.0,1.0,2.0,1.0,1.0,1.0,1.0,6.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,1.0,2.0,1.0,2.0,1.0,1.5,0.5,1.0,2.0,1.0,2.0,1.0,2.0,1.0,1.0,1.0,1.0,6.0,2.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,2.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,2.0,2.0,2.0,2.0,3.0,1.0,1.0,1.0,2.0,1.0,1.0,2.0,2.0,1.0,2.0,1.0,2.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,2.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,2.0,2.0,2.0,2.0,3.0,1.0,1.0,1.0,2.0,1.0,1.0,2.0,2.0,1.0,2.0,1.0,2.0,1.0,2.0,1.0,2.0,1.0,2.0,1.0,2.0,2.0,2.0,2.0,2.0,2.0,3.0,3.0,3.0,3.0,2.0,1.0,1.0,1.0,1.0,2.0,1.0,2.0,1.0,2.0,1.0,2.0,1.0,2.0,1.0,2.0,1.0,2.0,2.0,2.0,2.0,2.0,2.0,3.0,3.0,3.0,3.0,2.0,1.0,1.0,1.0,1.0,2.0,1.0,2.0,1.0,12.0,2.0,2.0,2.0,2.0,1.0,2.0,1.0,2.0,1.0,1.5,0.5,1.0,2.0,1.0,2.0,1.0,2.0,1.0,1.0,1.0,1.0,6.0]
in_thread do
for i in 0..a5.length-1
play a5[i],sustain: b5[i]*0.9,release: b5[i]*0.1,amp: 0.25
sleep b5[i]
end
end
end#level
end #fx reverb
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment