Guarda questo live loop:
live_loop :foo do
play 50
sleep 1
end
Forse ti stai chiedendo perché c’è il nome :foo
. L’aggiunta del nome è importante perché significa che questo live loop è diverso da tutti gli altri.
Non possono esistere due live loop con lo stesso nome.
Questo significa che se vogliamo avere più live loop, dobbiamo assegnare loro nomi differenti:
live_loop :foo do
use_synth :prophet
play :c1, release: 8, cutoff: rrand(70, 130)
sleep 8
end
live_loop :bar do
sample :bd_haus
sleep 0.5
end
Ora puoi aggiornare e cambiare ciascun live loop indipendentemente e tutto funziona.
Una cosa che potresti aver notate è che i live loop lavora automaticamente con il sistema dei cue (segnali di sincronizzazione) che abbiamo visto in precedenza. Ogni volta che il live loop parte, genera un nuovo evento cue
con il nome del live loop. Possiamo, di conseguenza, usare sync
con uno di questi cue per essere sicuri che i loop siano sincronizzati tra loro senza fermare nulla.
Prendiamo in esame questo codice mal sincronizzato:
live_loop :foo do
play :e4, release: 0.5
sleep 0.4
end
live_loop :bar do
sample :bd_haus
sleep 1
end
Vediamo se riusciamo a sistemare il timing e la sincronizzazione senza stoppare. Per prima cosa, sistemiamo il loop :foo
cambiamo il fatto di sleep 1 a qualcosa tipo 0.5
:
live_loop :foo do
play :e4, release: 0.5
sleep 0.5
end
live_loop :bar do
sample :bd_haus
sleep 1
end
Non abbiamo ancora finito del tutto, avrai notato come i battiti non siano perfettamente allineati. Questo perché i loop sono fuori fase. Sistemiamo il problema sincronizzandoli tra loro:
live_loop :foo do
play :e4, release: 0.5
sleep 0.5
end
live_loop :bar do
sync :foo
sample :bd_haus
sleep 1
end
Wow, ora è tutto a tempo, senza aver fermato nulla.
Ora, andiamo avanti e programmiamo live con live loop!