Guarda questo live loop:
live_loop :foo do
  play 50
  sleep 1
endForse 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
endOra 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
endVediamo 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
endNon 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
endWow, ora è tutto a tempo, senza aver fermato nulla.
Ora, andiamo avanti e programmiamo live con live loop!