You can also use lambdas like blocks:
#code arvo pärt
#fonctions tintinnabuli inspirée de fur alina
#version polyphonique play
drone = lambda do
play :B2, release: 5, amp: rrand(0.50, 1)
play :B0, release: 5, amp: rrand(0.50, 1)
sleep choose([2, 3, 4, 5])
end
a = lambda do
play :B3, release: 5, amp: rrand(0.50, 1)
sleep choose([0, 1])
play :Fs2, release: 5, amp: rrand(0.50, 1)
sleep choose([0.5, 1, 2, 3, 4, 5])
end
b = lambda do
play choose([:Cs4,:D4]), attack: choose([0.2,0.5]), release: 3, amp: rrand(0.50, 1)
sleep choose([0, 1])
play :B2, attack: choose([0.2,0.5]), release: 4, amp: rrand(0.50, 1)
sleep choose([0.5, 1, 2, 3, 4, 5])
end
c = lambda do
play choose([:E4,:Fs4]), attack: choose([0.2,0.5]), release: 3, amp: rrand(0.50, 1)
sleep choose([0, 1])
play :D3, attack: choose([0.2,0.5]), release: 4, amp: rrand(0.50, 1)
sleep choose([0.5, 1, 2, 3, 4, 5])
end
d = lambda do
play choose([:G4,:A4,:B4]), attack: choose([0.2,0.5]), release: 3, amp: rrand(0.50, 1)
sleep choose([0, 1])
play :Fs3, attack: choose([0.2,0.5]), release: 4, amp: rrand(0.50, 1)
sleep choose([0.5, 1, 2, 3, 4, 5])
end
e = lambda do
play choose([:Cs4,:D4]), attack: choose([0.2,0.5]), release: 3, amp: rrand(0.50, 1)
sleep choose([0, 1])
play :B3, attack: choose([0.2,0.5]), release: 4, amp: rrand(0.50, 1)
sleep choose([0.5, 1, 2, 3, 4, 5])
end
f = lambda do
play choose([:E5,:Fs5]), attack: choose([0.2,0.5]), release: 3, amp: rrand(0.50, 1)
sleep choose([0, 1])
play :D4, attack: choose([0.2,0.5]), release: 4, amp: rrand(0.50, 1)
sleep choose([0.5, 1, 2, 3, 4, 5])
end
g = lambda do
play choose([:G5,:A5,:B5]), attack: choose([0.2,0.5]), release: 3, amp: rrand(0.50, 1)
sleep choose([0, 1])
play :Fs4, attack: choose([0.2,0.5]), release: 4, amp: rrand(0.50, 1)
sleep choose([0.5, 1, 2, 3, 4, 5])
end
h = lambda do
play choose([:Cs6,:D6]), attack: choose([0.2,0.5]), release: 3, amp: rrand(0.50, 1)
sleep choose([0, 1])
play :B4, attack: choose([0.2,0.5]), release: 4, amp: rrand(0.50, 1)
sleep choose([0.5, 1, 2, 3, 4, 5])
end
flower = lambda do
play :Fs5, attack: choose([0.2,0.5]), release: 3, amp: rrand(0.50, 1)
sleep choose([0, 1])
play :Cs4, attack: choose([0.2,0.5]), release: 4, amp: rrand(0.50, 1)
sleep choose([0.5, 1, 2, 3, 4, 5])
end
bfa = lambda do
play :D4, attack: choose([0.2,0.5]), release: 3, amp: rrand(0.50, 1)
sleep choose([0, 1])
play :B2, attack: choose([0.2,0.5]), release: 4, amp: rrand(0.50, 1)
sleep choose([0.5, 1, 2, 3, 4, 5])
end
dfa = lambda do
play :B4, attack: choose([0.2,0.5]), release: 3, amp: rrand(0.50, 1)
sleep choose([0, 1])
play :Fs3, attack: choose([0.2,0.5]), release: 4, amp: rrand(0.50, 1)
sleep choose([0.5, 1, 2, 3, 4, 5])
end
#structure
in_thread(name: :arvopart) do
#uncomment to use one or another
#use_play_defaults port: ‘focusrite_usb_play’
#use_play_defaults port: ‘arturia_minibrute_2’
with_fx :reverb, room: 0.9 do
loop do
use_synth :hollow
drone.call
14.times do
[a, b, c, d, e, f, g, h, flower].choose.call
end
end
end
end
… and great post! Thanks! I also do love Arvo Pärts music.