|
#moonlight_sonata-RF.rb |
|
#coded by Robin Newman, December 2019, utilising Sonatina Symphonic Orchestra Samples |
|
#plays on Sonic Pi 3.1 |
|
#play using run_file "path/to/this/file"all |
|
#install SSO first (I did so on my Desktop see path below) |
|
use_debug true |
|
set :bpm,49 |
|
#path to library samples folder (including trailing /) |
|
path="~/Desktop/Sonatina Symphonic Orchestra/Samples/" |
|
|
|
|
|
#create array of instrument details |
|
# each entry: name,folder name,sample prefix,offsetclass type,lowest note, highest note |
|
voices=[ |
|
["Grand Piano","Grand Piano","piano-p-",0,:c1,:c8]] |
|
|
|
uncomment do #can comment if samples loaded, to allow quick redefine of functions |
|
killit = 0 #used to stop live_loop :t when all samples loaded |
|
define :load do |i| |
|
trigger=0 |
|
live_loop :t do |
|
sleep 0.3 |
|
if trigger== 1 |
|
cue :start |
|
end |
|
stop if killit == 1 # stop when all samples loaded |
|
end |
|
load_samples path+voices[i][1],voices[i][2] |
|
trigger=1 |
|
sync :start |
|
end |
|
|
|
for i in (0..0) do |
|
load(i) |
|
end |
|
killit = 1 #stop live_loop :t |
|
sleep 2 |
|
end |
|
|
|
puts "The following voices from Sonatina Symphonic Library can be used:-" |
|
voices.each_with_index do |n,i| |
|
puts i.to_s,n[0] |
|
end |
|
|
|
puts voices.length.to_s+" voices" |
|
#setup global variables |
|
sampledir="" |
|
sampleprefix="" |
|
offsetclass="" |
|
low="" |
|
high="" |
|
paths="" |
|
|
|
#setup data for current inst |
|
define :setup do |inst,path| |
|
sampledir=voices.assoc(inst)[1] |
|
sampleprefix=voices.assoc(inst)[2] |
|
offsetclass=voices.assoc(inst)[3] |
|
low=voices.assoc(inst)[4] |
|
high=voices.assoc(inst)[5] |
|
#amend path for instrument sampledir |
|
paths=path+sampledir+"/" |
|
end |
|
|
|
sleep 0.2 |
|
|
|
#define routine to play sample using Sonatina data |
|
define :pl do |np,d,inst,vol=1,s=0.9,r=0.1,tp=0,pan=0| #nv,d,offsetclass,vol,s,r,tp,pan |
|
m=60.0/current_bpm #missing scaling factor |
|
setup(inst,path) |
|
#check if note in range of supplied samples |
|
#use lowest/highest sample for out of range |
|
change=0 #used to give rpitch for coverage outside range |
|
frac=0 |
|
n=np+tp #note allowing for transposition |
|
if n.is_a?(Numeric) #allow frac tp or np |
|
frac=n-n.to_i |
|
n=n.to_i |
|
end |
|
if note(np)+tp<note(low) #calc adjustment for low note |
|
change=note(np).to_i+tp-note(low) |
|
n=note(low) |
|
end |
|
if note(np).to_i+tp > note(high) #calc adjustment for high note |
|
change = note(np).to_i+tp-note(high) |
|
n=note(high) |
|
end |
|
if change < -5 or change > 5 #set allowable out of range |
|
#if outside print messsage |
|
puts 'inst: '+inst+' note '+np.to_s+' with transpostion '+tp.to_s+' out of sample range' |
|
else #otherwise calc and play it |
|
#calculate base note and octave |
|
base=note(n)%12 |
|
oc = note(n) #do in 2 stages because of alignment bug |
|
oc=oc/12 -1 |
|
#find first part of sample note |
|
slookup=['c','c#','d','d#','e','f','f#','g','g#','a','a#','b'] |
|
#lookup sample to use,and rpitch offset, according to offsetclass |
|
case offsetclass |
|
when 0 |
|
oc += 1 if base == 11 #adjust if sample needs next octave |
|
snumber=[0,0,3,3,3,6,6,6,9,9,9,0] |
|
offset=[ 0,1,-1,0,1,-1,0,1,-1,0,1,-1] |
|
when 1 |
|
snumber=[1,1,1,4,4,4,7,7,7,10,10,10] |
|
offset=[-1,0,1,-1,0,1,-1,0,1,-1,0,1] |
|
when 2 |
|
oc -= 1 if base == 0 #adjust if sample needs previous octave |
|
snumber=[11,2,2,2,5,5,5,8,8,8,11,11] |
|
offset=[1,-1,0,1,-1,0,1,-1,0,1,-1,0] |
|
when 3 |
|
snumber=[0,1,2,3,4,5,6,7,8,9,10,11] #this class has sample for every note |
|
offset=[0,0,0,0,0,0,0,0,0,0,0,0] |
|
end |
|
#generate sample name |
|
sname=sampleprefix+(slookup[snumber[base]]).to_s+oc.to_s |
|
#play sample with appropriate rpitch value |
|
sample paths,sname,rpitch: offset[base]+change+frac,sustain: s*d*m,release: r*d*m,pan: pan,amp: vol |
|
end |
|
end |
|
|
|
#define function to play lists of linked samples/durations using Sonatina samples |
|
define :plarray do |notes,durations,my_bpm,offsetclass,vol=1,s=0.9,r=1,tp=0,pan=0| |
|
#puts offsetclass |
|
notes.zip(durations).each do |n,d| |
|
if n.respond_to?(:each) |
|
n.each do |nv| |
|
pl(nv,d*60.0/my_bpm,offsetclass,vol,s,r,tp,pan) if ![nil,:r,:rest].include? nv#allow for rests |
|
end |
|
else |
|
pl(n,d*60.0/my_bpm,offsetclass,vol,s,r,tp,pan) if ![nil,:r,:rest].include? n#allow for rests |
|
end |
|
sleep d*60.0/my_bpm |
|
end |
|
end |
|
with_fx :reverb,room: 0.4,mix: 0.5 do |
|
with_fx :level,amp: 2 do |
|
uncomment do |
|
a1=[:r,:r,:r,:r,:r,:r,:Af4,:Af4,:Af4,:Af4,:Af4,:Af4,:A4,:Af4,:Gf4,:Cf5,:Ff4,:r,:r,:r,:r,:G4,:G4,:G4,:G4,:G4,:G4,:Gf4,:Gf4,:G4,:Ff4,:Gf4,:Gf4,:r,:r,:Cf5,:C5,:Bf4,:Cf5,:Cf5,:C5,:Bf4,:Cf5,:Cf5,:Cf5,:A4,:G4,:Gf4,:Df4,:Df4,:Df4,:r,:r,:Df5,:Df5,:Df5,:Df5,:Df5,:Df5,:C5,:Df5,:Ef5,:Ef5,:Ff5,:Ef5,:Df5,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:Af4,:Af4,:Af4,:Af4,:Af4,:Af4,:A4,:Af4,:Gf4,:Cf5,:Ff4,:r,:r,:Cf5,:Cf5,:Cf5,:Cf5,:Cf5,:Cf5,:C5,:Df5,:Ef5,:Ff5,:D5,:C5,:Df5,:Df5,:D5,:C5,:Df5,:Df5,:D5,:C5,:Df5,:Df5,:Cf5,:Cf5,:A4,:A4,:Af4,:Af4,:Gf4,:Af4,:A4,:Af4,:Af4,:Df4,:r,:r,:Af2,:Af2,:Af2,:Af2,:Af2,:Af2,:Af2,:Af2,:Af2,:Af2,:Af2,:Af2,:Af2,:Af2,:Af2,:Af2,:Df3,:Af2,:r,:r,:r] |
|
b1=[4.0,4.0,4.0,4.0,2.0,1.0,0.75,0.25,3.0,0.75,0.25,2.0,2.0,2.0,1.0,1.0,1.0,1.0,2.0,2.0,1.0,0.75,0.25,3.0,0.75,0.25,3.0,1.0,2.0,1.0,1.0,2.0,2.0,2.0,1.0,1.0,3.0,1.0,3.0,1.0,3.0,1.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,1.0,1.0,2.0,1.0,0.75,0.25,3.0,0.75,0.25,2.0,1.0,1.0,3.0,1.0,2.0,1.0,1.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,2.0,1.0,0.75,0.25,3.0,0.75,0.25,2.0,2.0,2.0,1.0,1.0,1.0,1.0,1.0,0.75,0.25,3.0,0.75,0.25,2.0,1.0,1.0,2.0,2.0,2.0,2.0,3.0,1.0,3.0,1.0,3.0,1.0,3.0,1.0,2.0,2.0,3.0,1.0,1.0,1.0,1.0,1.0,2.0,1.0,1.0,2.0,2.0,1.0,1.0,2.0,3.0,0.75,0.25,3.0,0.75,0.25,3.0,0.75,0.25,3.0,0.75,0.25,3.0,0.75,0.25,2.0,2.0,2.0,2.0,4.0,4.0] |
|
in_thread do |
|
plarray(a1,b1,get(:bpm),"Grand Piano",0.6,0.9,1,0,0.5) #|notes,durations,my_bpm,offsetclass,vol=1,s=0.9,r=1,tp=0,pan=0| |
|
end |
|
|
|
a2=[:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:Gf3,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:Af2,:Af2,:Af2,:r,:r,:r,:r,:r,:r,:r,:r,:r] |
|
b2=[4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,2.0,0.33333334,0.33333334,0.33333334,1.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,3.0,0.75,0.25,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0] |
|
in_thread do |
|
plarray(a2,b2,get(:bpm),"Grand Piano",1,0.9,1,0,0.3) #|notes,durations,my_bpm,offsetclass,vol=1,s=0.9,r=1,tp=0,pan=0| |
|
end |
|
end#comment1 |
|
|
|
a3=[:Af3,:Df4,:Ff4,:Af3,:Df4,:Ff4,:Af3,:Df4,:Ff4,:Af3,:Df4,:Ff4,:Af3,:Df4,:Ff4,:Af3,:Df4,:Ff4,:Af3,:Df4,:Ff4,:Af3,:Df4,:Ff4,:A3,:Df4,:Ff4,:A3,:Df4,:Ff4,:A3,:D4,:Gf4,:A3,:D4,:Gf4,:Af3,:C4,:Gf4,:Af3,:Df4,:Ff4,:Af3,:Df4,:Ef4,:Gf3,:C4,:Ef4,:Ff3,:Af3,:Df4,:Af3,:Df4,:Ff4,:Af3,:Df4,:Ff4,:Af3,:Df4,:Ff4,:Af3,:Ef4,:Gf4,:Af3,:Ef4,:Gf4,:Af3,:Ef4,:Gf4,:Af3,:Ef4,:Gf4,:Af3,:Df4,:Ff4,:Af3,:Df4,:Ff4,:A3,:Df4,:Gf4,:A3,:Df4,:Gf4,:Af3,:Cf4,:Ff4,:Af3,:Cf4,:Ff4,:A3,:Cf4,:Ef4,:A3,:Cf4,:Ef4,:Af3,:Cf4,:Ff4,:Af3,:Cf4,:Ff4,:Af3,:Cf4,:Ff4,:Af3,:Cf4,:Ff4,:G3,:Cf4,:Ff4,:G3,:Cf4,:Ff4,:G3,:Cf4,:Ff4,:G3,:Cf4,:Ff4,:G3,:Cf4,:F4,:G3,:Cf4,:F4,:G3,:Cf4,:F4,:G3,:Cf4,:F4,:G3,:C4,:Ff4,:G3,:Cf4,:Ff4,:G3,:Df4,:Ff4,:Gf3,:Df4,:Ff4,:Gf3,:Cf4,:D4,:Gf3,:Cf4,:D4,:G3,:Cf4,:Df4,:Ff3,:Cf4,:Df4,:Gf3,:Cf4,:D4,:Gf3,:Cf4,:D4,:Gf3,:Bf3,:Df4,:Gf3,:Bf3,:Df4,:Cf4,:D4,:Gf4,:Cf4,:D4,:Gf4,:Cf4,:Ef4,:Gf4,:Cf4,:Ef4,:Gf4,:Cf4,:Ff4,:G4,:Cf4,:Ff4,:G4,:Cf4,:Ff4,:G4,:Cf4,:Ff4,:G4,:Cf4,:Ef4,:Gf4,:Cf4,:Ef4,:Gf4,:Cf4,:Ef4,:Gf4,:Cf4,:Ef4,:Gf4,:Cf4,:Ff4,:G4,:Cf4,:Ff4,:G4,:Cf4,:Ff4,:G4,:Cf4,:Ff4,:G4,:Cf4,:Ef4,:Gf4,:Cf4,:Ef4,:Gf4,:Cf4,:D4,:F4,:Cf4,:D4,:F4,:Cf4,:Df4,:Af4,:Cf4,:Df4,:Af4,:A3,:Df4,:Gf4,:A3,:Df4,:Gf4,:G3,:Cf4,:D4,:G3,:Cf4,:D4,:Gf3,:A3,:Ef4,:Gf3,:A3,:Ef4,:Df3,:Gf3,:A3,:Df3,:Gf3,:A3,:Df3,:Gf3,:Af3,:Df3,:F3,:Af3,:Gf3,:A3,:Df4,:A3,:Df4,:Gf4,:Df4,:Gf4,:A4,:Df4,:Gf4,:A4,:Df4,:Af4,:Cf5,:Df4,:Af4,:Cf5,:Df4,:Af4,:Cf5,:Df4,:Af4,:Cf5,:Df4,:Gf4,:A4,:Df4,:Gf4,:A4,:C4,:Gf4,:A4,:Df4,:Gf4,:A4,:Ef4,:Gf4,:Af4,:Ef4,:Gf4,:Af4,:Ef4,:Gf4,:Af4,:Ef4,:Gf4,:Af4,:Ff4,:Af4,:Df5,:Ff4,:Af4,:Df5,:Ef4,:Gf4,:A4,:Df4,:Ff4,:Bf4,:r,:Af4,:A4,:Gf4,:r,:C4,:Ef4,:r,:C4,:Ef4,:r,:C4,:Ef4,:r,:C4,:Ef4,:r,:Df5,:Ff5,:Df5,:r,:Df4,:Ff4,:Df4,:Ef3,:A3,:Gf3,:C4,:A3,:Ef4,:C4,:Gf4,:Ef4,:A4,:Gf4,:C5,:Ff3,:Df4,:Af3,:Ff4,:Df4,:Af4,:Ff4,:Df5,:Af4,:Ff5,:Df5,:Af4,:Df4,:G4,:Ff4,:Bf4,:G4,:Df5,:Bf4,:Ff5,:Df5,:G5,:Ff5,:Bf5,:Gf4,:C5,:A4,:Ef5,:C5,:Gf5,:Ef5,:A5,:Gf5,:C6,:A5,:Ef6,:C6,:Gf5,:A5,:Ef5,:Gf5,:C5,:Ef5,:A4,:C5,:Gf4,:A4,:Ef4,:Gf4,:C4,:Ef4,:A3,:C4,:Gf3,:A3,:Ef3,:r,:Gf3,:A3,:r,:Gf3,:Af3,:r,:r,:Gf3,:A3,:r,:Gf3,:A3,:r,:A3,:Af3,:Gf3,:r,:r,:A3,:Af3,:Gf3,:r,:Ef3,:A3,:Df4,:Ef3,:A3,:Df4,:Ef3,:Af3,:C4,:Ef3,:Gf3,:C4,:Ff3,:Af3,:Df4,:Af3,:Df4,:Ff4,:Af3,:Df4,:Ff4,:Af3,:Df4,:Ff4,:Af3,:Ef4,:Gf4,:Af3,:Ef4,:Gf4,:Af3,:Ef4,:Gf4,:Af3,:Ef4,:Gf4,:Af3,:Df4,:Ff4,:Af3,:Df4,:Ff4,:A3,:Df4,:Gf4,:A3,:Df4,:Gf4,:Af3,:Cf4,:Ff4,:Af3,:Cf4,:Ff4,:A3,:Cf4,:Ef4,:A3,:Cf4,:Ef4,:Af3,:Cf4,:Ff4,:Cf4,:Ff4,:Af4,:Cf4,:Ff4,:Af4,:Cf4,:Ff4,:Af4,:Cf4,:Gf4,:A4,:Cf4,:Gf4,:A4,:Cf4,:Gf4,:A4,:Cf4,:Gf4,:A4,:Cf4,:Ff4,:Af4,:Cf4,:Ff4,:Af4,:C4,:Gf4,:Af4,:Df4,:Ff4,:Af4,:Ef4,:Gf4,:Af4,:Ef4,:Gf4,:Af4,:Ff4,:Af4,:Df5,:Ff4,:Af4,:Df5,:D4,:Gf4,:A4,:D4,:Gf4,:A4,:C4,:Gf4,:Af4,:C4,:Gf4,:Af4,:Df4,:Ff4,:Af4,:Df4,:Ff4,:Af4,:Df4,:F4,:Af4,:Df4,:F4,:Af4,:Df4,:Gf4,:A4,:Df4,:Gf4,:A4,:Df4,:Gf4,:A4,:Df4,:Gf4,:A4,:Df4,:F4,:Af4,:Df4,:F4,:Af4,:Df4,:F4,:Af4,:Df4,:F4,:Af4,:Df4,:Gf4,:A4,:Df4,:Gf4,:A4,:Df4,:Gf4,:A4,:Df4,:Gf4,:A4,:Df4,:F4,:Af4,:Df4,:F4,:Af4,:Df4,:Gf4,:A4,:Df4,:Gf4,:A4,:Cf4,:Gf4,:A4,:Cf4,:Gf4,:A4,:Cf4,:Gf4,:A4,:Cf4,:Ff4,:Af4,:A3,:Ff4,:Af4,:A3,:Ef4,:Gf4,:Af3,:Ef4,:Gf4,:Af3,:Df4,:Ff4,:Gf3,:Df4,:Ef4,:Gf3,:Df4,:Ef4,:Af3,:Df4,:Ef4,:A3,:Df4,:Ef4,:Af3,:Df4,:Ff4,:Af3,:Df4,:Ff4,:Gf3,:C4,:Ef4,:Gf3,:C4,:Ef4,:Ff3,:Af3,:Df4,:Af3,:Df4,:Ff4,:Af3,:Df4,:Ff4,:Af3,:Df4,:Ff4,:Af3,:Ef4,:Gf4,:Af3,:Ef4,:Gf4,:Af3,:Ef4,:Gf4,:Af3,:Ef4,:Gf4,:Af3,:Ff4,:Df4,:Af4,:Ff4,:Df5,:Af4,:Ff5,:Df5,:Af5,:Ff5,:Df5,:C5,:Ef5,:A4,:C5,:Gf4,:A4,:Ef4,:Gf4,:A3,[:Ff3,:Df4],:Ff4,:Df4,:Af4,:Ff4,:Df5,:Af4,:Ff5,:Df5,:Af5,:Ff5,:Df5,:C5,:Ef5,:A4,:C5,:Gf4,:A4,:Ef4,:Gf4,:A3,[:Ff3,:Df4],:Af3,:Df4,:Ff4,:Df4,:Af3,:r,:Ff3,:Af3,:Df4,:Af3,:Ff3,:r,:Df3,:Ff3,:Af3,:Ff3,:Df3,:Af2,:Df3,:Af2,:Ff2,:Af2,:Ff2,:Df2,[:Ff3,:Af3,:Df4],[:Ff3,:Af3,:Df4]] |
|
b3=[0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,1.0,1.0,1.0,1.0,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,1.0,1.0,1.0,1.0,1.0,1.0,1.0,1.0,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.6666667,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,1.0,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,1.0,0.33333334,0.33333334,0.33333334,2.0,1.0,0.33333334,0.33333334,0.33333334,2.0,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,1.3333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,1.3333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,2.0,2.0,4.0] |
|
in_thread do |
|
plarray(a3,b3,get(:bpm),"Grand Piano",0.3,0.9,1,0,0.3) #|notes,durations,my_bpm,offsetclass,vol=1,s=0.9,r=1,tp=0,pan=0| |
|
end |
|
|
|
uncomment do |
|
a4=[:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:C5,:C4,:Ef4,:r,:C4,:Ef4,:r,:C4,:Ef4,:r,:C4,:Ef4,:r,:Af3,:A3,:Gf3,:Ff3,:Ff4,:Af4,:r,:Ff4,:Af4,:r,:Ff4,:Af4,:r,:Ff4,:Af4,:r,:Ff3,:Af3,:r,:Ff3,:Af3,:r,:Ff3,:Af3,:r,:Ff3,:Af3,:r,:r,:r,:r,:r,:r,:r,:Df3,:r,:A3,:Af3,:Gf3,:Ef3,:r,:r,:Gf3,:Af3,:r,:r,:Gf3,:A3,:r,:Gf3,:A3,:r,:Gf3,:Af3,:r,:Df3,:Ff3,:Df4,:Df3,:Ff3,:Df4,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:C4,:r,:r,:r,:C4,:r,:r,:r,:r] |
|
b4=[4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,1.0,1.0,1.0,1.0,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,4.0,4.0,4.0,4.0,4.0,2.0,1.0,1.0,1.0,0.33333334,0.33333334,0.33333334,1.0,1.0,0.33333334,0.33333334,0.33333334,1.0,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,1.0,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,0.33333334,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,2.0,1.0,1.0,4.0,2.0,1.0,1.0,4.0,4.0,4.0,4.0] |
|
in_thread do |
|
plarray(a4,b4,get(:bpm),"Grand Piano",0.3,0.9,1,0,0.3) #|notes,durations,my_bpm,offsetclass,vol=1,s=0.9,r=1,tp=0,pan=0| |
|
end |
|
a5=[:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:C3,:r,:Df3,:C3,:D3,:Df3,:C3,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:Af3,:Gf3,:r,:r,:r,:r,:Af3,:Gf3,:r,:r,:r,:r] |
|
b5=[4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,2.0,1.0,1.0,2.0,1.0,1.0,2.0,2.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,2.0,1.0,0.33333334,0.33333334,0.33333334,4.0,2.0,1.0,0.33333334,0.33333334,0.33333334,4.0,4.0,4.0,4.0] |
|
in_thread do |
|
plarray(a5,b5,get(:bpm),"Grand Piano",0.3,0.9,1,0,0.3) #|notes,durations,my_bpm,offsetclass,vol=1,s=0.9,r=1,tp=0,pan=0| |
|
end |
|
|
|
a6=[:Df3,:Cf3,:A2,:Gf2,:Af2,:Af2,[:Af2,:Df3],[:Af2,:C3],:Df3,:Gf2,:Cf3,:Cf3,:Ff3,:Ff3,:D3,:C3,:Cf3,:Bf2,:Cf3,:Ff2,:G2,:Gf2,:Gf2,:Cf3,:Ff3,:G3,:Ff3,:Cf3,:Ff3,:G3,:Ff3,:Cf3,:Af2,:F2,:Gf2,:Cf3,:C3,:Df2,:Df2,[:Df2,:Gf2],[:Df3,:F3],:Gf3,:Ef3,:Df3,[:Af2,:C3],[:Af2,:C3],[:Af2,:Df3],:Gf2,:G2,:Af2,:Af2,:Af2,:Af2,:Af2,:Af2,:Af2,:Af2,:Af2,:Af2,:Af2,:A2,:Gf2,:Af2,[:Af2,:Df3],[:Af2,:C3],:Df3,:Gf2,:Cf3,:Cf3,:Ff3,:Ef3,:Ff3,:Ef3,:Df3,[:Af2,:C3],[:Af2,:Df3],:Gf2,:Af2,:Df3,:Gf3,:A3,:Gf3,:Df3,:Gf3,:A3,:Gf3,:Df3,:Gf2,:Ef3,:Ff3,:Df3,:Ef3,:C3,:Df3,:A2,:Af2,:Gf2,:Af2,:Af2,:Df2,:C2,:Df2,:Af1,:Df2,:Af1,:Df2,:r,:r,[:Af2,:Df3],[:Af2,:Df3]] |
|
b6=[4.0,4.0,2.0,2.0,2.0,2.0,4.0,4.0,2.0,2.0,2.0,2.0,4.0,4.0,4.0,1.0,1.0,2.0,2.0,1.0,1.0,2.0,2.0,5.0,1.0,1.0,1.0,5.0,1.0,1.0,1.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,4.0,4.0,2.0,1.0,1.0,3.0,1.0,2.0,1.0,1.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,12.0,4.0,4.0,2.0,2.0,2.0,2.0,4.0,4.0,2.0,2.0,2.0,2.0,4.0,4.0,2.0,1.0,1.0,2.0,2.0,2.0,2.0,5.0,1.0,1.0,1.0,5.0,1.0,1.0,1.0,2.0,2.0,3.0,1.0,1.0,1.0,1.0,1.0,2.0,1.0,1.0,2.0,2.0,4.0,4.0,4.0,4.0,4.0,4.0,6.0,2.0,2.0,2.0,4.0] |
|
in_thread do |
|
plarray(a6,b6,get(:bpm),"Grand Piano",0.4,0.9,1,0,-0.3) #|notes,durations,my_bpm,offsetclass,vol=1,s=0.9,r=1,tp=0,pan=0| |
|
end |
|
|
|
a7=[:Df2,:Cf2,:A1,:Gf1,:Af1,:Af1,:Df2,:C2,:Df2,:Gf1,:Cf2,:Cf2,:Ff2,:Ff2,:D2,:C2,:Cf2,:Bf1,:Cf2,:r,:r,:Gf2,[:Gf1,:Gf2],:Cf2,:Ff2,:G2,:Ff2,:Cf2,:Ff2,:G2,:Ff2,:Cf2,:Af1,:F1,:Gf1,:Cf2,:C2,:r,:r,:Gf1,:F2,:Gf2,:Ef2,:Df2,:C2,:C2,:Df2,:Gf1,:G1,:Af1,:Af1,:Af1,:Af1,:Af1,:Af1,:Af1,:Af1,:Af1,:Af1,:Af1,:A1,:Gf1,:Af1,:Df2,:C2,:Df2,:Gf1,:Cf2,:Cf2,:Ff2,:Ef2,:Ff2,:Ef2,:Df2,:C2,:Df2,:Gf1,:Af1,:Df2,:Gf2,:A2,:Gf2,:Df2,:Gf2,:A2,:Gf2,:Df2,:Gf1,:Ef2,:Ff2,:Df2,:Ef2,:C2,:Df2,:A1,:Af1,:Gf1,:Af1,:Af1,:r,:r,:r,:r,:r,:r,:r,:r,:r,:r,:Df2,:Df2] |
|
b7=[4.0,4.0,2.0,2.0,2.0,2.0,4.0,4.0,2.0,2.0,2.0,2.0,4.0,4.0,4.0,1.0,1.0,2.0,2.0,1.0,1.0,2.0,2.0,5.0,1.0,1.0,1.0,5.0,1.0,1.0,1.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,2.0,4.0,4.0,2.0,1.0,1.0,3.0,1.0,2.0,1.0,1.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,12.0,4.0,4.0,2.0,2.0,2.0,2.0,4.0,4.0,2.0,2.0,2.0,2.0,4.0,4.0,2.0,1.0,1.0,2.0,2.0,2.0,2.0,5.0,1.0,1.0,1.0,5.0,1.0,1.0,1.0,2.0,2.0,3.0,1.0,1.0,1.0,1.0,1.0,2.0,1.0,1.0,2.0,2.0,4.0,4.0,4.0,4.0,4.0,4.0,4.0,2.0,2.0,2.0,2.0,4.0] |
|
in_thread do |
|
plarray(a7,b7,get(:bpm),"Grand Piano",0.4,0.9,1,0,-0.3) #|notes,durations,my_bpm,offsetclass,vol=1,s=0.9,r=1,tp=0,pan=0| |
|
end |
|
end#comment |
|
end#level |
|
end #reverb |
Excellent!