Перейти к содержанию

14. Справочник OSC

English

Справочник соответствует DL20 0.8.84; источник — документация OSC в поставке (docs/OSC.md).

Управление показом по сети из пульта, QLab, TouchOSC, Companion или любого другого источника OSC. Приём по UDP.

Появилось в версии 0.5.58. Раньше поле OSC INPUT PORT в настройках было подписано PLANNED и ничего не слушало — если у вас более старая версия, описанное ниже работать не будет.


1. Включение

SETTINGS → раздел CONTROLLERS → поле OSC INPUT PORT.

Введите порт и нажмите Enter (или просто уйдите из поля — значение применится). Стандартный порт для OSC — 7000.

Ноль выключает приём. По умолчанию стоит ноль: программа не открывает сетевой порт на машине оператора, пока её об этом не попросят.

Порт запоминается для этой машины, а не внутри проекта. Перенос проекта на другую площадку не притащит туда чужой номер порта.

Под полем — строка состояния:

OFF — порт 0 выключает приём
LISTENING udp/7000 · принято 47 · /composition/columns/3/connect
ОШИБКА: osc: server_thread_new failed (port in use?)

Если строка красная — порт занят другой программой. Возьмите другой номер.


2. Команды

Реализованы запуск сцены, запуск окна и, с версии 0.8.84, адреса треков и групп стойки таймлайна. Индексы начинаются с единицы, как подписаны кнопки в программе (SCENE 1, SCENE 2, …).

Запустить колонку (сцену)

/composition/columns/{N}/connect

N — номер колонки. /composition/columns/3/connect делает ровно то же, что нажатие кнопки SCENE 3: запускает все заполненные окна этой колонки на всех видимых слоях.

Запустить одну ячейку

/composition/layers/{L}/clips/{W}/connect

L — номер слоя (сверху вниз, L1 = 1), W — номер окна в строке. /composition/layers/2/clips/5/connect запускает клип на пересечении второго слоя и пятой колонки.

Аргумент

Аргумент необязателен. Сообщение без аргументов (bang) запускает команду.

Если аргумент есть:

Аргумент Действие
нет аргумента, строка запуск
целое, не ноль (1) запуск
целое 0 игнор
дробное >= 0.5 запуск
дробное < 0.5 игнор

Ноль игнорируется намеренно: пульты и TouchOSC шлют нажатие кнопки как 1, а отпускание как 0. Без этого правила одно нажатие оператора срабатывало бы дважды.

Треки и группы (0.8.84)

/composition/tracks/{N}/connect
/composition/tracks/{N}/disconnect
/composition/tracks/{N}/toggle
/composition/tracks/{N}/go
/composition/tracks/{N}/position
/composition/tracks/id/{ID}/{тот же набор}
/composition/groups/{N}/{тот же набор}
/composition/groups/id/{ID}/{тот же набор}

N — номер трека или группы с единицы по порядку стойки (главный трек — 1), без ведущих нулей, 1…999 — те же правила, что у колонки и ячейки выше. ID — id трека или группы (без ведущих нулей, не ноль; устойчив к перестановке строк стойки). Группа исполняется её мастером — участники идут веером, как от кнопки ▶ панели; адрес участника группы тоже ведёт всю его группу.

  • connect — старт (на уже играющем треке/группе — ничего); disconnect — стоп (на стоящем — ничего); toggle — ▶/■ по состоянию мастера; go — то же, что кнопка GO▸ панели (переход к следующему cue; без открытой панели таймлайна — отказ).
  • position — не кнопка, а значение: число (float или int) переставляет трек на эти секунды от начала и срабатывает на любое число, включая 0.0. Bang или строка (кнопка, по ошибке назначенная на /position, или строка "2.5") позицию НЕ меняют: команда отклоняется строкой лога osc /composition/tracks/1/position -> refused: position needs a number.

Трек или группа не найдены — программа пишет в лог osc track N -> no such track (или no such group) и ничего не исполняет; счётчик непонятых адресов эту команду не считает — адрес распознан, не нашлась только цель.


3. Как проверить, что команды доходят

Строка состояния в SETTINGS → CONTROLLERS показывает счётчик принятых сообщений и последний пришедший адрес — независимо от того, поняли мы его или нет. Если адрес пришёл с опечаткой, вы увидите его и пометку (не команда). Это отвечает на два разных вопроса по очереди: «долетает ли вообще что-нибудь» и «правильный ли адрес я шлю».

Лог пишется в %LOCALAPPDATA%\DL\logs\ (свежий файл — на каждый запуск):

dl_composition: osc listening on udp/7000
dl_composition: osc launched column 3
dl_composition: scene column 3 launched (2 clips, 0 stopped)
dl_composition: osc cell L2-W7 is empty
dl_composition: osc column 12 out of range (1..8)
dl_composition: osc /composition/layers/1/video/opacity -> not a command
dl_composition: osc track 1 connect -> ok: #1 Main
dl_composition: osc track 99 -> no such track
dl_composition: osc track 1 position 2.500 -> ok: #1 Main

Нераспознанные адреса пишутся подробно первые 20 раз, дальше только считаются — чужой пульт, вещающий в сеть, не должен забить лог за смену. Строки трековых команд (osc track …, osc group …) тоже с пределом: строка — на смену цели или op (фейдер на position одного трека даёт одну строку, а не строку на сообщение), всего не больше 50 за запуск; исполняются при этом все команды.


4. Чем послать для проверки

oscsend (входит в liblo, есть в пакетах большинства дистрибутивов):

oscsend 127.0.0.1 7000 /composition/columns/2/connect i 1
oscsend 192.168.0.50 7000 /composition/layers/1/clips/3/connect
oscsend 127.0.0.1 7000 /composition/tracks/1/connect
oscsend 127.0.0.1 7000 /composition/tracks/1/position f 2.5

TouchOSC / Companion / QLab — укажите IP машины с DL20 и порт из настроек, адрес из раздела 2. Тип сообщения — кнопка (button), а не фейдер.


5. Чего пока нет

Адреса колонки и ячейки совместимы с Resolume; остальной API Resolume не поддерживается — в частности, НЕ работают:

  • /composition/layers/{L}/video/opacity и любые другие параметры;
  • /composition/columns/{N}/select (выбор без запуска);
  • /composition/tempocontroller/..., темп и синхронизация;
  • Art-Net на приём — в настройках он честно подписан PLANNED.

Честно про треки и группы (0.8.84): адресации по имени трека или группы нет — только номер по порядку стойки или числовой id; go без открытой панели таймлайна на экране отказывает. И для старых, и для новых адресов: отправка OSC из программы наружу и обратная связь о состоянии в пульт или любой OSC-клиент — нет вовсе.

Отдельно: произвольные OSC-адреса можно привязать к параметрам через MIDI Learn — механизм привязок общий для MIDI и OSC. Это другой сценарий, чем фиксированные команды выше.


Подробнее об управлении: 13.