9.3 Bucle live multiple

# Bucle live multiple

Sa privim bucla live de mai jos:

```
live_loop :foo do
  play 50
  sleep 1
end
```

Te-ai putea intreba de ce trebuie sa se numeasca ':foo'. Acest nume este important deoarece ne spune ca aceasta bucla live este diferita de toate celelalte.

*Nu pot exista doua bucle live cu acelasi nume care ruleaza in acelasi timp*.

Asta inseamna ca daca vrem sa avem mai multe bucle live care ruleaza in acelasi timp, trebuie sa le dam nume diferite:

```
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
```

Acum poti modifica fiecare bucla live in mod independent si totul va continua sa functioneze.

## Sincronizarea buclelor live

Un lucru pe care poate l-ai remarcat este ca buclele live folosesc automat mecanismul de marcaje pentru thread-uri pe care l-am vazut anterior. De fiecare data cand bucla live se reia, genereaza un nou eveniment 'cue' cu numele buclei. Putem deci sa ne sincronizam ('sync') cu aceste marcaje pentru a ne asigura ca buclele noastre sunt in faza fara sa oprim ceva.

Sa analizam acest cod sincronizat gresit:

```
live_loop :foo do
  play :e4, release: 0.5
  sleep 0.4
end
live_loop :bar do
  sample :bd_haus
  sleep 1
end
```

Sa vedem cum putem repara timing-ul si sa facem sincronizarea fara sa il oprim. Mai intai sa corectam bucla ':foo' astfel incat pentru pauza sa avem o valoare care intra de un numar intreg de ori in 1 - ceva gen '0.5' ar merge:

```
live_loop :foo do
  play :e4, release: 0.5
  sleep 0.5
end
live_loop :bar do
  sample :bd_haus
  sleep 1
end
```

Nu am terminat, totusi. Vei observa ca bataile nu se aliniaza corect. Asta se intampla deoarece buclele *sunt defazate*. Sa corectam aceasta problema sincronizandu-le una cu alta:

```
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
```

Totul este acum perfect sincronizat - fara sa fim nevoiti sa ne oprim.

Acum, mergi mai departe si programeaza live cu bucle live!
