I have 4 samples with the same length (32 bars). I want to start with one sample playing, then adding one by one. Once a sample is chosen and playing, it is looping. My goal is to randomize the order of the samples whereas no sample is chosen twice so that after 4 rounds, all samples are sounding. As simple as that.
Since I want the code to decide with which sample to start, I am working with if / else statement to narrow the choices after each round. However, for some reason the code still sometimes chooses the same samples.
Where is the mistake?
I know it is a lot of options, maybe there is a simpler way to do it?
Thank you!
sounds = "/samples"
r = Random.rand(1..10)
use_random_seed r
sound1 = sounds, ["a.wav", "b.wav", "c.wav", "d.wav"].choose
sound2 = sounds, ["a.wav", "b.wav", "c.wav"].choose
sound3 = sounds, ["d.wav","b.wav", "c.wav"].choose
sound4 = sounds, ["d.wav", "a.wav", "b.wav"].choose
sound5 = sounds, ["d.wav", "a.wav", "c.wav"].choose
sound6 = sounds, ["b.wav", "c.wav"].choose
sound7 = sounds, ["a.wav", "c.wav"].choose
sound8 = sounds, ["a.wav", "b.wav"].choose
sound9 = sounds, ["d.wav", "c.wav"].choose
sound10 = sounds, ["b.wav", "d.wav"].choose
sound11 = sounds, ["a.wav", "d.wav"].choose
live_loop :loop1 do
sample sound1, amp:4, pan: -1
sleep 32
end
sleep 32
if sound1 == "/samples/d.wav"
live_loop :loop2 do
sample sound2, amp:4, pan: 1
sleep 32
end
elsif sound1 == "/samples/a.wav"
live_loop :loop2 do
sample sound3, amp:4, pan: 1
sleep 32
end
elsif sound1 == "/samples/c.wav"
live_loop :loop2 do
sample sound4, amp:4, pan: 1
sleep 32
end
else
live_loop :loop2 do
sample sound5, amp:4, pan: 1
sleep 32
end
end
sleep 32
if sound1 == "/samples/d.wav" && sound2 == "/samples/a.wav" or sound2 == "/samples/d.wav" && sound1 == "/samples/a.wav"
live_loop :loop3 do
sample sound6, amp:4
sleep 32
end
elsif sound1 == "/samples/d.wav" && sound2 == "/samples/b.wav" or sound2 == "/samples/d.wav" && sound1 == "/samples/b.wav"
live_loop :loop3 do
sample sound7, amp:4
sleep 32
end
elsif sound1 == "/samples/d.wav" && sound2 == "/samples/c.wav" or sound2 == "/samples/d.wav" && sound1 == "/samples/c.wav"
live_loop :loop3 do
sample sound8, amp:4
sleep 32
end
elsif sound1 == "/samples/a.wav" && sound2 == "/samples/b.wav" or sound2 == "/samples/a.wav" && sound1 == "/samples/b.wav"
live_loop :loop3 do
sample sound9, amp:4
sleep 32
end
elsif sound1 == "/samples/a.wav" && sound1 == "/samples/c.wav" or "/samples/a.wav" && sound1 == "/samples/c.wav"
live_loop :loop3 do
sample sound10, amp:4
sleep 32
end
else
live_loop :loop3 do
sample sound11, amp:4
sleep 32
end
end