Considera el siguiente bucle en vivo:
live_loop :foo do
play 50
sleep 1
end
Quizás te preguntas el por qué es importante el nombre foo
, la respuesta es que es importante porque significa que este bucle es diferente de TODOS los otros.
Nunca pueden haber dos bucles en vivo con el mismo nombre ejecutándose simultáneamente
Esto significa que si queremos múltiples bucles concurrentes, debemos darles diferentes nombres:
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
Ahora puedes actualizar y cambiar cada bucle independientemente y funcionará siempre.
Una cosa que ya habrás notado es que los bucles en vivo trabajan automáticamente automáticamente con el mecanismo de marca de hilos que exploramos anteriormente. Cada bucle en vivo genera un evento cue
Gracias a ello podemos sincronizarlos para asegurar bucles sin pausa.
Considera este código mal sincronizado:
live_loop :foo do
play :e4, release: 0.5
sleep 0.4
end
live_loop :bar do
sample :bd_haus
sleep 1
end
Veamos si podemos arreglar el timing y sincronizar sin parar. Primero, arreglemos el bucle :foo
para hacer el factor de sleep 1 a algo como 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
Todavía no terminamos, pues notarás que los pulsos no se alinean correctamente. Esto se debe a que los bucles están desfasados out of phase. Arreglemos Esto sincronizándolos entre sí:
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, todo está sincronizado ahora y sin parar!
¡Ahora ve y codifica en vivo con bucles en vivo!