К содержанию
fohbook/ TouchDesigner
профи

Шоу по таймкоду

Картинка, привязанная к общему времени: приём таймкода, список событий, репетиция и поведение при обрыве.

Шоу с фонограммой идёт по таймкоду: свет, видео и звук слушают одно время. Задача TouchDesigner — быть послушным приёмником.

Схема

источник таймкода ──▶ audio in ──▶ ltc in ──▶ timecode ──▶ null_tc
                                                              │
                                       таблица событий ◀──────┤
                                       индекс видео    ◀──────┘
  1. Таймкод приходит аудиосигналом на вход звуковой карты — Таймкод.
  2. LTC In CHOP декодирует, Timecode CHOP приводит к удобному виду.
  3. Из времени считается всё: кадр видео, номер сцены, значения параметров.

Список событий

Держите его таблицей, а не в коде:

tc            action        arg
00:01:12:00   scene         intro
00:02:44:12   flash         1.0
00:03:20:00   scene         chorus
00:05:01:00   blackout      -

Колбэк на изменение времени сравнивает текущий таймкод с таблицей и выполняет то, что пора — Скрипты.

Таблица правится на репетиции без захода в сеть, и её видно — DAT.

Видео по таймкоду

Не «играть», а позиционировать: Play = 0, Index считается из таймкода — Movie File In. Тогда видео не уплывает за час шоу и одинаково стартует после любой перемотки.

index = (tc_seconds - clip_start_seconds) * clip_fps

Что делать при обрыве

Решите заранее и запишите в документацию:

Событие Поведение
Таймкод пропал Замереть на месте / продолжить по внутренним часам / уйти в чёрное
Таймкод прыгнул назад Перепозиционироваться (репетиция)
Таймкод прыгнул вперёд Догнать состояние: применить все события до текущего момента
Таймкод не приходил с начала Не запускаться, показывать «нет таймкода»

Третий пункт — самый забываемый. При перемотке на середину шоу должно оказаться в правильном состоянии, а не «доиграть с начала».

Репетиция

  1. Соберите запись таймкода в файл и прогоняйте шоу без площадки — Репетиция.
  2. Отдельно прогоняйте переходы и стыки: именно там ломается.
  3. Прогоните целиком, глядя на счётчик пропущенных кадров.
Не привязывайте таймлайн проекта к таймкоду

Соблазн велик, но локальный таймлайн управляет куком многих вещей, и рывки будут. Таймкод — это данные, из которых считается положение всего остального.

Крупные цифры на служебном экране

Текущий таймкод, признак наличия сигнала, текущая сцена и следующее событие — крупно. В момент, когда что-то пошло не так, это отвечает на вопрос «стоит ли шоу или это мы».

рядом по смыслу