Внутренности таймкода
В этой заметке хочу рассказать вам про таймкод на более низком уровне. Возможно это поможет вам понять некоторые вещи и детальнее разобраться в создании шоу.
После написания моей заметки про Таймкод grandMA2, я уже десятки раз и в личке, и в чате по МА отвечал на вопросы, связанные с передачей сигнала таймкода, поэтому идея этой заметки возникла уже давно, но руки вот дошли только сейчас.
Если вы не читали заметку про таймкод в МА2, рекомендую это сделать, хотя бы её первую часть, так как вся дальнейшая информация будет подразумевать эти знания.
Как устроен таймкод?
В рамках таймкода мы говорим с вами про его две разновидности (их больше, но МА поддерживает только две). Это MTC и LTC. Расшифровываются, как «МИДИ Таймкод» и «Линейный Таймкод».
Технически оба варианта (протокола) представляют собой информацию о времени, закодированную в звук. В случае с МТС — информация передаётся через МИДИ-сигналы, а в случае с линейным таймкодом — в виде самых настоящих звуков.
Вариант с МТС используется обычно только для программирования шоу в условиях примитивной студии и обычно не используется на мероприятии (по крайней мере я не знаю ни одно большое шоу, сделанное на МТС — его трудно передавать на большие расстояния, а те, кто делают это по сети — флаг вам в руки).
Поэтому наши дальнейшие рассуждения будут исключительно про линейный таймкод. Как я уже говорил выше — он представляет из себя обычный звук, который можно услышать обычным человеческим ухом. Звучит он примерно так:
Для человеческого слуха — это обычный писк, но если посмотреть на этот звуковой файл в звуковом редакторе на большом увеличении, то будет вот такая картинка:
![](http://sysolyatin.com/pictures/timecode-low-level.png)
Смотря на это изображение уже можно догадаться, что мы слышим не просто писк, а какой-то определенный закодированный фрагмент. Минимальная единица измерения любой цифровой информации — это 1 бит. Бит может принимать всего два значения — 0 и 1. В случае с обычными компьютерами, на уровне физики — это наличие или отсутствие напряжение на каком-то контакте какой-то микросхемы, но мы в случае таймкода передаём информацию через звук, поэтому:
- Наличие звука в течение определённого времени — это 1
- Тишина в течение определённого времени — это 0
Таким образом, писк, который мы слышали выше, это ни что иное, как набор закодированных бит, например,
1010110011110010101...
Так как любую информацию можно закодировать набором нулей и единиц (эта заметка прилетела по интернету до вашего компа или телефона тоже в виде нулей и единиц), значит ответ на вопрос «Сколько сейчас время?» тоже можно закодировать с помощью нулей и единиц. Поэтому отвечая на вопрос заголовка этого раздела заметки — таймкод — это закодированное время.
В статье про LTC на википедии есть табличка, которая описывает, как именно набор нулей и единиц превращаются в время и обратно, если интересно, посмотрите:
Но если вы не будете создавать собственный световой пульт или генератор таймкода, то эта информация вам не пригодится, поэтому переходим к следующей части.
Как происходит синхронизация?
Первое и самое главное — синхронизация должна быть привязана к музыке. К записанной музыке.
Даже, если артист выступает с музыкантами вживую, обычно есть подложка или клик, которые играют вместе с музыкантами. Если этого нет — у вас не получится сделать таймкодное шоу (в стандартном его понимании).
Давайте представим песню, которая идёт 1 минуту 16 секунд
![](http://sysolyatin.com/pictures/timecode-low-level-2.png)
Пускай эта звуковая дорожка будет подложкой, под которую играют музыканты, или минусовкой, под которую поёт вокалист. Мы хотим написать на эту песню таймкод. Для этого я добавляю в звуковом редакторе ещё одну звуковую дорожку, которая в себе будет содержать наш «магический писк»:
![](http://sysolyatin.com/pictures/timecode-low-level-3.png)
Обычно в настройках генератора таймкода всегда можно указать частоту кадров (если не знаете, что это и зачем, то почитайте заметку про таймкод, о которой я говорил выше) и, самое главное, стартовое время
![](http://sysolyatin.com/pictures/timecode-low-level-5.png)
А это означает, что кодировать и передавать в световой пульт можно не только текущее время песни, а вообще любое время!
Те, кто работают с таймкодом и знают все его нюансы, наверное не поняли, почему прошлый абзац ярко выделен, но вы не представляете, сколько я раз отвечал на вопрос «а как мне добавить вторую песню по таймкоду в шоу? у неё же время будет совпадать с первой!».
Давайте подытожим вышеизложенную информацию: мы генерируем дорожку с таймкодом, это обычный звук, как ещё один синтезатор или гитара, добавленная в песню, только в этой звуковой дорожке находится «писк», в котором закодировано время, начинающееся с заданного в настройках стартового значения.
Передача таймкода
Так, как таймкод — это звук, то воспроизводить и передавать мы его будем тоже, как звук. И тут у нас есть два варианта: простой и профессиональный. Простой вариант можно использовать дома, за неимением специального звукового оборудования. Профессиональный вариант обычно используется на реальном шоу (ну и дома, если у вас есть хотя бы многоканальная звуковая карта). Давайте разберем оба варианта.
В первом варианте (более простом), в вашем звуковом редакторе нужно увести всю песню в «левое ухо», а дорожку с таймкодом в «правое ухо», после этого можно экспортировать обычный стерео звуковой файл
![](http://sysolyatin.com/pictures/timecode-low-level-6.png.jpg)
Его можно, как обычную песню открыть в любом проигрывателе, с левой колонки у вас должна начать играть песня, с правой «писк» таймкода.
Теперь нам понадобится вот такой кабель:
![](http://sysolyatin.com/pictures/image-5.png-1.jpg)
Желтыми и зелеными линиями показана схема распайки. Его мы подключаем к источнику звука (ноут, телефон, комп, мп3-плеер — что угодно, с гнездом миниджека), XLR вставляем в световой пульт, RCA (или что-то иное, зависит от вашей звуковой колонки) — в колонку.
Играть начинает только одна колонка, при этом наш «магический звук» улетает в пульт.
Чтобы всё заработало, нужно выставить правильную громкость.
Идеальное значение — это 0 dBu. Пульты grandMA умею воспринимать диапазон от -11 dBu до +15 dBu.
Если нет никакого измерителя громкости, который показывает уровень dBu, просто покрутите громкость, пока не увидите бегущего времени на пульте.
Второй вариант, он же профессиональный, подразумевает многоканальную передачу звука. Обычно на концерте нужен не только плейбек, воспроизводимый в зал, но и некоторый набор звуков, который воспроизводится музыкантам в уши. Ещё обычно одно из условий — это запуск плейбека самим артистом на сцене (обычно это делает барабанщик или клавишник).
В таком случае, из звукового редактора нам нужно получить многоканальный звуковой файл. Т. е. в нем будет не только два канала (левый и правый), а ещё, как минимум, третий и четвертый.
Обычно такой звуковой файл выглядит примерно так:
![](http://sysolyatin.com/pictures/multichannel.png)
Такой звуковой файл уже не воспроизвести через обычный звуковой выход на наушники, так, как каналов больше двух, поэтому нужно специальное оборудование — многоканальная звуковая карта, или цифровой звуковой пульт с поддержкой многоканального цифрового входа (по USB) или поддержкой Dante.
Схема подключения начинает выглядеть примерно так:
![](http://sysolyatin.com/pictures/scheme-1.png)
- С ноута/портастудии/чего-угодно приходит сразу 4 звуковых канала
- Первый и второй разводятся на левый и правый и отправляются в общий микс для зрителей (в колонки/мониторы на столе в студии)
- Третий канал выходит в мониторные миксы в уши артистов, на нужной им громкости
- Четвертый канал выходит посылается в отдельный мониторный микс (или в то, что есть на вашей модели звукового пульта), ему устанавливается громкость 0 dBu. Затем физический выход этого мониторного микса необходимо соединить со световым пультом.
- В случае необходимости передать таймкод ещё куда-то (второй световой пульт, медиасервер и т. д.) можно использовать звуковой сплиттер, либо послать этот же мониторный микс на ещё один физический выход звукового пульта.
Рендер звуковых файлов
В обоих вариантах, описанных выше, я говорил про «сохраняем звуковой файл». У некоторых коллег возникает вопрос «а зачем? Ведь звуковой редактор, в котором мы сгенерировали таймкод может сразу и воспроизводить звук, что можно использовать и на студии, и даже на самом концерте, прям из рипера включать плейбек!».
Но тут нужно вспомнить одну вещь: Windows, Mac OS и даже Linux не являются операционными системами реального времени. А это значит, что
Любые сгенерированные «на лету» данные, могут отличаться от сгенерированных по тем же условиям данных в другое время.
В нашем случае это может приводить к пропускам кадров, фризам и т. д. Любая генерация «на лету» даёт намного большую нагрузку на процессор, чем просто «воспроизведение» готовых байтиков, записанных в файл.
Это же относится и к генератору таймкода в QLab. Лучше создать звуковой файл и просто его воспроизводить:
- Он будет всегда одинаковым
- Это требует меньше вычислительных ресурсов
- Можно воспроизводить с любого проигрывателя или устройства (портастудия, синтезатор и так далее)
Есть площадки и мероприятия, где это может быть совсем не критично, а есть те, где важен каждый кадр. В любом случае, я должен был об этом вас предупредить😉
Заключение
Если эта заметка оказалась вам очень полезной, оставьте немного на чай, это всегда вдохновляет на написание новых заметок.
Посмотрите другие заметки про свет, там много полезных материалов.