Beschouw even de volgende code:
live_loop :foo do
play 50
sleep 1
end
Je kan je al afgevraagd hebben waarom het de naam : foo
moet zijn. Deze naam is belangrijk, omdat het betekent dat deze live loop van de andere live loops verschilt.
Er kunnen nooit twee live loops met de zelfde naam afspelen.
Dit betekent dat als we willen dat meerdere live loops gelijktijdig willen uit voeren, moeten we ze gewoon een andere naam geven:
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
Je kan nu elke live loop onafhankelijk van elkaar wijzigen en updaten en het werkt gewoon allemaal.
Wat je misschien al opgevallen is is dat live loops automatisch met het thread cue mechanisme werkt dat we al verkend hebben. Elke keer een live loop afspeelt genereert deze een nieuw cue gebeuren met de live loop’s naam. We kunnen daarom op deze cue’s sync-en om ons ervan te verzekeren dat onze loops in sync lopen zonder we daarvoor iets moeten gaan stoppen.
Beschouw even deze slecht gesyncte code:
live_loop :foo do
play :e4, release: 0.5
sleep 0.4
end
live_loop :bar do
sample :bd_haus
sleep 1
end
Laten we eens kijken als we de timing en synchronisatie kunnen verhelpen zonder deze te stoppen. Laten we eerst de :foo
loop fixen en de sleep factor 1 veranderen naar 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
We zijn nog niet helemaal klaar -je zult merken dat de beats niet helemaal correct samenlopen. Dit komt omdat de loops uit fase spelen. Laten we dat verhelpen door de ene aan de andere te synchroniseren:
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, nu is alles perfect in tijd - allemaal zonder te stoppen.
Ga nu door met je live code en live loops!