Timecode в grandMA2
Периодически в чатах возникает вопрос, как правильно работать с таймкодом, как делать какие-то определенные действия с ним, и как это всё правильно настроить. И вот я решил написать эту статью, чтобы систематизировать все свои знания по этой теме и закрыть возникающие вопросы коллег.
Итак, что же вообще такое таймкод в рамках светового пульта? Для заказчика это всегда выглядит сложно, дорого, очень дорого и «Ваааааау, у нас шоу по таймкоду!». К сожалению, для многих специалистов нашей отрасли это выглядит примерно так же, но ещё и «Это для крутых Московских шоу же, а у меня тут ДК в провинциальном городке, какой ещё таймкод сюда…».
Как сказал один из людей, у кого я учился многому в шоу-индустрии:
Timecode — это всего лишь ответ на вопрос «Кто нажмёт кнопку Go?»
И действительно. В написанном кьюлисте можно попросить нажимать кнопку Go самого художника по свету, его ассистента, а можно даже уборщицу, которая мыла зал перед спектаклем! Самое главное, в сценарии сделать в нужных местах пометки «Нажимай после слова лопата!».
Но в любом случае, все три способа будут не самыми эффективными. Даже сам художник по свету, который писал этот кьюлист может отвлечься, забыть, не успеть. И что-то произойдет не вовремя, а как мы помним, один из самых главных факторов в свете «вовремя». Зритель не представляет, синие у вас воши должны были стать или маджента, но вот если это сделать не в такт, то зрителям это будет заметно. Конечно же не всем, но всё же.
А если отдать роль нажатия кнопки Go пульту, да ещё и рассказать, в какое время это нужно сделать, то можно не сомневаться, что пульт не отвлечется на разговоры с красивой артисткой и не забудет нажать эту кнопку.
Я не буду рассказывать про историю таймкода, кинопленку и прочее, если захотите, найдите и почитайте сами про это. К этой теме это не будет иметь особого отношения. Однако, что очень хочется отметить из его истории — таймкод может содержать различное количество кадров в одной секунде. Что это такое, и зачем нам нужно:
Время в таймкоде кодируется несколькими числами:
ЧАСЫ:МИНУТЫ:СЕКУНДЫ:КАДРЫ
Так как таймкод пришел к нам из кино, то логично, что там видео состоит из нескольких физических кадров. Именно поэтому в свете используется этот термин, а не миллисекунды.
Но что ещё хорошо — когда мы делаем связку света и видео — мы снова начинаем работать с нашими киношными кадрами в прямом смысле этого слова.
Есть несколько стандартных вариантов количества кадров в одной секунде. Это опять же связано с историей таймкода, кино и ТВ.
Как выбрать количество кадров в секунде?
Самые стандартные варианты таймкода — это 25 или 30 кадров в секунде. И вот тут перед выбором нужно понять очень важный момент:
Количество кадров на всём свето-видео-тракте должно быть равно одному значению!
Ну или хотя бы делиться без остатка. Что это значит: если мы выбрали формат 25 кадров, то у нас
- Таймкод на 25 кадров
- Светодиодный экран или проектор работает на 25 или 50 кадров
- Камеры для вывода на экран работают на 25 или 50 кадров
- Видеокарта имеет выход на 25 или 50 кадров
- Контент отрендерен под 25 или 50 кадров
- Все мониторы для превью видео с камер и медиасервера работают в 25 или 50 кадров.
Если хоть что-то из этого окажется в 30/60, то не произойдет ровного распределения и мы получим лаги на видеотракте.
И нет, это не ошибка, что я тут начал рассказывать про видео в статье про свет. Как можно заметить, большинство нюансов выбора частоты кадров касаются именно видеотракта. Поэтому если у нас общая система с видео — то мы уточняем этот вопрос у них. Если видео нет — можем выбрать что угодно. Самое главное, чтобы видео потом случайно не появилось, когда уже всё прописано =)
Итак, мы выбрали частоту кадров. В примере, который я буду рассматривать дальше в этой статье, у меня нет видеосерверов, экранов и камер, поэтому я волен сам выбрать то, что мне нравится. В дальнейшем все примеры будут проходить на 30 кадрах в секунду.
Какой бывает таймкод?
Timecode — это специальный сигнал, в котором закодировано время. И как вы уже догадались, этот сигнал можно передать кучей различных способов. Два самых распространённых из них
- LTC — линейный таймкод. По факту это звук, передаваемый по обычному звуковому кабелю, представляет из себя набор очень быстро сменяемых звуков «есть писк» и «нет писка». За счёт такого двоичного кодирования как раз и шифруется текущее передаваемое время.
- MTC — MIDI таймкод. Это MIDI-сигналы, передаваемые через MIDI интерфейс, в которых так же заложено текущее передаваемое время.
Есть и другие способы передачи сигнала таймкода, например, по ArtNet, но на них мы не будем останавливаться в рамках этой статьи.
Давайте лучше подумаем, что выбрать LTC или MTC? А вот это зависит от ваших задач и имеющегося оборудования. LTC можно передавать на большие расстояния, как обычный звук, например, от музыкантов на сцене через звуковой стеджбокс в пульт на FOH и от туда уже физическим кабелем к вам в МАшу. А ещё отрендеренный в звуковой файл LTC сигнал — это гарантия того, что всегда будет приходить один и тот же сигнал, чего нельзя сказать о генерации таймкода «на лету», что чаще бывает в MTC, который нельзя передавать на большие расстояния (ну по крайней мере без костылей). Но при этом MTC удобно использовать локально, особенно на моменте прописывания шоу, когда у вас всё на одном компе и не хочется в студии собирать всю схему со звуковыми пультами, и прочими железками. А на реальном шоу это всё спокойно сможет работать уже по LTC, переданному со сцены. Для этого нужно будет лишь изменить источник входа сигнала в пульте.
Последний момент про LTC и перейдём к практике: при подготовке звукового трека на выходе мы должны получить многоканальную звуковую дорожку, состоящую, как минимум из трёх каналов:
- Левый канал из исходного трека
- Правый канал из исходного трека
- Канал со звуком из писков с нашим LTC
Каналов может быть намного больше при необходимости, например, отдельный канал для клика барабанщика, отдельные каналы для звуковых пространственных эффектов и так далее.
Самое главное — это то, что звуковые дорожки, которые должны быть слышны из определённых источников (порталы, мониторы, ушной мониторинг и так далее) должны быть отправлены в свои выходы в роутинге пульта, а канал с сигналом LTC должен из отдельного выхода приходить к нам в световой пульт. И конечно же нужно не забывать, что у этого сигнала нельзя изменять громкость, а так же необходимо его изначально выставить на нужный уровень, иначе декодер в пульте не сможет его прочитать.
На этом про LTC всё, дальше все примеры будем делать с MTC сигналом, чтобы всю схему можно было собрать и повторить в рамках одного компа, вообще не имея ни светового, ни звукового железа под рукой. (А кто-то думал, что работать с таймкодом можно только имея дорогое оборудование??).
Необходимый софт
Чтобы повторить всё, что мы будем делать в статье необходимо иметь у себя следующий софт:
- loopMIDI — бесплатное приложение, которое позволяет сделать петлю из MIDI интерфейса внутри одного компа, по сути дела — это виртуальная MIDI-звуковая карта, у которой вход соединён с выходом: всё, что будет подано на вход, можно будет прочитать на выходе
- REAPER — условно бесплатный звуковой DAW-редактор, в котором есть возможность генерации дорожек с таймкодом. Теоретически, вы можете использовать любой DAW-редактор, но я буду показывать все примеры именно на этом.
- grandMA2 onPC — на момент написания статьи последняя версия 3.9.60.37. Показывать буду на ней, на немного более ранних теоретически тоже должно быть примерно всё так же. Для работы с таймкодом не нужны открытые параметры, всё бесплатно, без СМС и регистрации.
Устанавливаем и настраиваем софт
Я не буду подробно останавливаться на установке этих приложений, там всё просто «Далее-Далее» и даже никто не пытается подсунуть браузер с Алисой. Лучше перейдём к их настройке.
Запускаем loopMIDI. Тут нужно ввести название виртуального порта (или оставить то, что есть). И нажать кнопку «+». Всё.
![](http://sysolyatin.com/pictures/timecode-001.png)
C Reaper настроек будет немного больше, но там тоже ничего сложного. При первом запуске откроются настройки, потом их можно открыть через меню (Options -> Preferences). В разделе MIDI необходимо активировать выход с названием, которое мы вводили на предыдущем шаге.
![](http://sysolyatin.com/pictures/timecode-002.png)
Для этого нужно нажать правой клавишей по названию выхода и выбрать пункт Enable. Дальше настройки можно закрыть и перейти к главному окну. Тут необходимо поставить правильный формат времени. Для этого нужно нажать правой клавишей по часам и выбрать подходящий нам вариант.
![](http://sysolyatin.com/pictures/timecode-003.png)
В начало времени на первую дорожку перетащим звуковой файл, под который мы будем делать наше световое шоу, должно получится примерно так:
![](http://sysolyatin.com/pictures/timecode-004.png)
Теперь в меню Insert выберем генератор таймкода:
![](http://sysolyatin.com/pictures/timecode-005.png)
Далее необходимо растянуть дорожку таймкода на всю длину нашей музыки и открыть её настройки. Для этого нужно нажать правой клавишей по дорожке таймкода и выбрать третий пункт:
![](http://sysolyatin.com/pictures/timecode-006.png)
В открывшемся окне необходимо выбрать тип таймкода (в нашем примере это будет MTC), частоту кадров и время, с которого генератор начнёт создавать таймкод. Так как это одна и единственная композиция по таймкоду в нашем шоу — оставим нулевое время. Если будет несколько, у каждой должно быть своё время старта, не пересекающееся с остальными композициями в шоу.
![](http://sysolyatin.com/pictures/timecode-007.png)
Теперь необходимо отправить эту MIDI дорожку с таймкодом в наш виртуальный порт:
![](http://sysolyatin.com/pictures/timecode-008.png)
На этом в Reaper пока больше ничего делать не будем, переходим к настройке MA.
Настройка MA onPC для работы с MTC
В первую очередь необходимо зайти в настройки самой MA onPC, они находятся в желтом шарике на окне Command:
![](http://sysolyatin.com/pictures/timecode-009.png)
На вкладке MIDI в качестве источника входа необходимо выбрать наш виртуальный порт из loopMIDI:
![](http://sysolyatin.com/pictures/timecode-010.png)
Теперь откроем пустое окно рабочей области и соберем на нем набор окон для работы с таймкодом:
![](http://sysolyatin.com/pictures/timecode-011.png)
Нужно добавить:
- Timecode Pool
- Timecode Slots Pool
- Clock (выбрать тип timecode, selected)
- Timecode View
- Macros
Теперь если выбрать «TC Slot 2» (это слот по умолчанию для MIDI, первый для LTC) и нажать Play в Reaper, то мы должны начать видеть время таймкода из Reaper на всех местах, отмеченных стрелками.
![](http://sysolyatin.com/pictures/timecode-012.png)
Если вдруг этого не произошло — прочитайте внимательно всё, что было выше ещё раз. Ну и конечно же попробуйте более внимательно это повторить у себя.
Теперь мы готовы переходить к созданию самого таймкода в МА.
Варианты создания таймкода
Переключение кьюшек при приходе определенного времени в пульт можно сделать несколькими способами, как минимум это:
- Запись информации о переключении сцен руками, с привязкой ко времени таймкода
- Ручное выставление времени каждого переключения
- Выгрузка меток из Reaper
Второй вариант мы рассматривать даже не будем, он совсем для извращенцев, поэтому поговорим про первый и третий. Первый намного легче с точки зрения настроек и идеально подходит для ситуаций, когда уже написан кьюлист, который мы можем переключать руками, но есть необходимость автоматизировать это действие.
Третий вариант подходит больше для создания шоу с нуля, когда у нас есть только музыка в звуковом редакторе, мы её слушаем и думаем «а вот тут будет прикольно изменить световую сцену», но самой световой сцены ещё нет.
Но это я описал субъективные крайности этих двух способов, дальше вы сами для себя можете решить, когда и какой использовать, а может придёте только к одном способу. Поэтому рассмотрим их подробнее.
Запись таймкода
Для «ручной записи таймкода» необходимо создать этот самый таймкод в пуле пульта. Для этого кнопкой Edit или правой клавишей мышки нажмем на пустую ячейку в Timecode Pool:
![](http://sysolyatin.com/pictures/timecode-013.png)
Откроется окно с редактором, которое можно сразу закрыть. После этого ячейка в пуле станет заполнена. На неё нужно нажать и таймкод отобразится в окне Timecode View. Вернее появится только заголовок, так как данных о метках нашего таймкода там всё равно ещё нет.
![](http://sysolyatin.com/pictures/timecode-014.png)
В этом же окне Timecode View необходимо нажать на желтый шарик, откроется окно настроек, где нужно выбрать Slot для нашего таймкода:
![](http://sysolyatin.com/pictures/timecode-015.png)
Slot — это источник времени, который будет слушать наш таймкод. По умолчанию там установлен источник от внутренних часов, можно поставить в явном виде источник Slot2, который используется для MTC, но я рекомендую использовать Link Selected у всех таймкодов, так можно будет легко переключаться между источниками (например, на студии писать по MTC, а на площадке использовать LTC).
Ещё в этом же окне стоит поменять Time Unit на выбранный FPS.
Ну и чтобы точно всё заработало, необходимо теперь в пульте выбрать этот самый источник для Link Selected. Для этого нужно просто нажать на нужный элемент Timecode Slots Pool.
![](http://sysolyatin.com/pictures/timecode-016.png)
Соответственно, если мы захотим использовать LTC, будет достаточно просто нажать на первый слот.
Перейдем непосредственно к самому процессу записи. Нажимаем на наш таймкод в Timecode Pool
![](http://sysolyatin.com/pictures/timecode-017.png)
Над энкодерными колесами появляются кнопки управления нашим таймкодом. Нужно перемотать его в самое начало и нажать кнопку записи (с красным кругом). На элементе нашего таймкоде в пуле появились часы, но они не должны идти. Если вдруг там начало бежать время, ещё раз прочитайте этот раздел статьи и внимательно всё повторите.
В текущем состоянии пульт ждет время от внешнего источника, указанного в слоте. Сейчас можно нажать кнопку воспроизведения в Reaper, в пульте пойдет время и начнется запись. В этот момент нужно руками запускать нужные экзекьюторы, нажимать кнопки Go, кнопки запуска различных бампов — в общем сделать с художественной точки зрения всё то, чтобы вы сделали, чтобы отсветить эту композицию руками. Но при этом всё, что вы нажали будет записано и привязано ко времени.
После окончания записи нужно нажать кнопку Стоп в панели управления таймкода (картинка выше) и после этого можно остановить сигнал из Reaper.
В Timecode View появится примерно следующее:
![](http://sysolyatin.com/pictures/timecode-018.png)
Это таймлайн нашего таймкода, который показывает, какие экзеьюторы в какое время должны включиться.
Для воспроизведения нужно перемотать таймкод в начало и нажать кнопку Play. Пульт опять перейдет в состояния ожидания внешнего сигнала времени. Далее включаем воспроизведение в Reaper-е и таймкод в пульте запустится, кьюшки начнут переключаться.
Для удобства воспроизведения таймкода (особенно, когда их много) можно сделать макрос (на каждый затаймкоженый трек). Он автоматизирует перемотку, включение воспроизведения, выбор нужно таймкода, а при необходимости может сделать ещё дополнительные задачи, например, погасить какие-то экзекьюторы с других песен, погасить дежурку, поднять фейдер на нужном для таймкода экзекьюторе, запустить команду, которая для вас сварит на кофе-машине средний капучино…
Но в самом простом виде этот макрос может выглядеть так:
Off Timecode 1 Thru
<<< Timecode 1 Thru
Select Timecode 1
Go Timecode 1
В нем мы останавливаем все таймкоды в пульте, перематываем их на начало, выбираем первый таймкод из пула и воспроизводим его. Пульт снова перейдет в ожидание сигнала времени и после запуска трека в Reaper начнет сам воспроизводить таймкод.
Если по таймкоду нажать правой клавишей мыши или кнопкой Edit, то, как и при изначальном создании, откроется окно редактирования, но в нем уже будут наши временные маркеры, которые можно ручками отредактировать, например чуть сдвинуть, если не успели попасть в такт при записи, ну или даже удалить, если записали лишнюю точку.
Выгрузка меток из Reaper
Рассмотрим ещё один вариант того, как метки таймкода могут появиться в пульте. Суть этого метода заключается в следующем:
- При воспроизведении музыки в Reaper, мы на ходу нажимаем кнопку M на клавиатуре в местах, где нам кажется, что будет прикольно что-то сделать со светом
- Выгружаем список меток из Repaer в специальный csv файл
- В бесплатном онлайн-сервисе конвертируем файл из рипера в макрос и файл таймкода для пульта
- Загружаем полученные файлы в пульт
- Запускаем макрос, который создаст кьюлист и загрузит таймкод в пул.
- Заполняем кьюшки кьюлиста необходимыми световыми картинами
Давайте теперь разберем это всё подробнее. После установки меток в нужных местах необходимо открыть окно Region/Marker Manager:
![](http://sysolyatin.com/pictures/timecode-019.png)
Откроется окно, в котором нужно отключить показ регионов и включить показ маркеров. Наши точки отобразятся, но время будет записано не в формате таймкода, поэтому выберем следующий пункт в настройках отображения:
![](http://sysolyatin.com/pictures/timecode-020.png)
И время в окне маркеров приведется к формату таймкода. В этом же окне маркеры можно назвать, так будут называться кьюшки в пульте после выгрузки.
После того, как все метки готовы, нажимаем правой клавишей мыши и выбираем экспорт маркеров:
![](http://sysolyatin.com/pictures/timecode-021.png)
Сохраняем файл в любом месте, от куда его можно будет взять в будущем и переходим к конвертированию.
Для этого нужно открыть сайт https://timecode.su/ — это бесплатный сервис для конвертирования маркеров рипера в таймкоды для различных пультов. Я разработчик этого сервиса.
На поле для загрузки файла маркеров нужно перетащить полученный на прошлом шаге csv файл и выбрать пульт grandMA2. Получится что-то похожее на это:
![](http://sysolyatin.com/pictures/timecode-022.png.jpg)
Далее необходимо поправить некоторые настройки, на основе которых пульт будет всё создавать:
- Sequence number — номер в пуле секвенций, в которую запишется созданный кьюлист, проверьте, что под этим номером нет секвенции в пульте, особенно, если шоу не пустое.
- Exec number — номер экзекьютора, на который будет назначена секвенция. Пишется в формате 1.{страница}.{экзекьютор}
- FPS — частота кадров нашего таймкода
- Trigger mode — команда для переключения кьюшек в кьюлисте
- Timecode number — номер таймкода в пуле таймкодов. Проверьте, что под этим номером нет таймкода в пульте, особенно, если шоу не пустое.
- Sequence Label — название кьюлиста
- Page Label — название страницы, на которой будет расположен экзекьютор
Когда всё заполнено, скачиваем TC.xml и M.xml, нажав соответствующие кнопки.
Полученные файлы необходимо сохранить:
- TC.xml — в директорию importexport
- M.xml — в директорию macros
Эти директории можно найти на флешке, в папке gma2, если что-то сохраняли на флешку из пульта, а в onPC версии можно использовать локальное хранилище данных для шоу-файлов:
C:\ProgramData\MA Lighting Technologies\grandma\gma2_V_3.9.60
путь может отличаться, в зависимости от вашей версии MA onPC и буквы системного диска.
Следующим шагом нужно импортировать макрос из M.xml. (Setup -> Import Export -> Import -> Macros). Он будет иметь название, указанное в Sequence Label онлайн-сервиса конвертации.
![](http://sysolyatin.com/pictures/timecode-023.png)
Обратите внимание на номер старта импорта макроса! Под этим номером не должно быть макроса в пульте! Ну и теперь можно смело запустить импортированный макрос из пула.
Пульт создаст таймкод и кьюлист на указанном в настройках конвертирования экзекьюторе. Единственное, у таймкода необходимо руками обязательно указать Slot для входного сигнала. Как это сделать и что это такое подробно описано в предыдущем разделе этой статьи.
Теперь можно перемотать таймкод на начало, запустить его, включить воспроизведение в Reaper-е и наслаждаться переключением кьюшек в момент прохождения маркера в Reaper.
![](http://sysolyatin.com/pictures/timecode-024.png)
Далее необходимо заполнить кьшки полученного кьюлиста каким-то световым содержанием и ваше шоу готово!
Заключение
Спасибо за прочтение статьи! Надеюсь смог рассказать вам что-то новое или решить возникшие вопросы. Я потратил на эту статью очень много времени, чтобы максимально простыми словами всё это рассказать и проиллюстрировать, поэтому, если будете использовать эти материалы на других ресурсах, пожалуйста, указывайте ссылку на эту страницу. А ещё на этой странице есть кнопка, чтобы оставить чаевые =)
В продолжении можно почитать мою статью про внутренности таймкода.