Множество живых циклов

# Несколько Живых Циклов

Рассмотрим следующий живой цикл:

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

Вы, наверное, заинтересовались, почему он называется `:foo`. Это имя имеет значение, поскольку оно показывает, что этот живой цикл отличается от всех других живых циклов.

*Не может быть двух живых циклов, выполняющихся под одним именем*.

Это значит, что если мы хотим иметь несколько одновременно выполняющихся циклов, нам просто нужно дать им разные имена:

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

Теперь можно обновлять и изменять каждый живой цикл отдельно и всё будет прекрасно работать.

## Синхронизация Живых Циклов

Есть один важный момент, который вы, наверное, уже заметили - все живые циклы автоматически работают с механизмом распарралеливания потоков, который мы исследовали ранее. Всякий раз, когда живой цикл начинает выполняться, он генерирует новое `cue` событие с названием цикла. Следовательно, мы можем `sync` эти сигналы, чтобы гарантировать нашим циклам синхронизацию без необходимости что-либо останавливать.

Рассмотрим этот плохо синхронизированный код:

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

Давайте посмотрим, сможем ли мы исправить тайминг и синхронизировать его без остановки воспроизведения. Сначала исправим время сна в цикле `:foo` на что-то вроде `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
```

Но мы ещё не совсем закончили, ведь вы заметили, что такты пока не выстроились правильно. Это происходит потому, что циклы *не в фазе*. Давайте исправим это, синхронизировав один цикл с другим:

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

Ого, теперь всё прекрасно синхронизируется по времени и всё это без остановки.

А теперь вперёд! Кодируйте вживую с живыми петлями!
