Live loop multipli

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.

Sincronizzare i live loop

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!