Project

General

Profile

Настройка ДУ с использованием CDU файлов

CDU файл описывает обмен данными с одним единственным устройством. Описание состоит из описания среды передачи команд, множества индикаторов, связанных с с данным устройством (исходящие данные), множества команд, формируемых данным устройством (входящие данные) и многое другое.

Синтаксис

Общим для всех является правило описания строк - любой строчный идентификатор, содержащий пробелы, обязан быть заключен в двойные кавычки. В противном случае файл будет прочитан неправильно. Если идентификатор не содержит пробела, то его тоже можно заключить в кавычки, но это не окажет никакого влияния на чтение файлов.

Символом комментария одной строки до конца является //

Поточный комментарий ограничен /* и */

//Это строка комментария

/* 
Это 
все
многострочный
комментарий 
*/

Название (NAME)

Обязательный параметр.
Определяет название устройства. Название используется, например, при указании получателя команды.

Синтаксиc:

NAME название - строка

Описание параметров:

NAME "Control pad"

Указание владельца (OWNER)

Необязательный параметр, позволяет указать, какое приложение имеет право пользоваться данным файлом. По умолчанию, CDU файлы считываются только приложением Джин, все остальные приложения файлы CDU игнорируют. Этот параметр позволяет читать файл другому приложению и избежать конфликта двойного использования устройства.

Синтаксиc:

OWNER Название приложения-владельца.
строка

Указывает название выполняемого файла без расширения. Например logger для logger.exe.

Для Трек2 существует синоним Editor(не зависит от названия выполняемого модуля)
Для Джин синоним Djin(не зависит от названия выполняемого модуля)

Устройство обмена (CREATE_DEVICE)

Обязательный параметр.
Указывает, каким образом ведется обмен с устройством, а также определяет его тип.

Синтаксиc:

CREATE_DEVICE Тип устройства Параметр

Например:

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

Типы устройств:

USB USB Устройство, подключаемое с использованием библиотеки FTDI http://ftdichip.com. Не поддерживается. Только для старых версий.
COM Устройство, подключенное через COM-порт (RS-232). Параметр - номер порта 1…9.
В т.ч. используется для подключения USB устройств через виртуальные COM порты.
UDP Устройство, использующее обмен через UDP сокеты.Параметр - номер порта
SNMP Устройство, использующее обмен через SNMP протокол. Параметр - номер порта
TCP_CLIENT Подключение к TCP/IP серверу. Создается клиентский сокет. Параметр - номер порта
TCP_SERVER Создание TCP/IP сервера, к которому будут подключаться клиенты. Создается серверный сокет. Параметр - номер порта
LOOPBACK версия>2.14.RC1.57
Специальное устройство, предназначенное для обмена с самим собой. Принимает все отосланные данные обратно.
Удобно для связывания различных модулей через пару индикатор->кнопка в пределах одного приложения.
Удобно для отладки.
Параметр не используется, но должен быть указан. Например, 1.

Строка параметров устройства (INIT_STR )

Строка содержит параметры инициализации устройства и зависит от его типа. Следует сразу за строкой CREATE_DEVICE

Синтаксиc:

INIT_STR строка параметров

Устройства по умолчанию (SET_RMT_OUT)

Указывает, что данное устройство является получателем команд по умолчанию. Это значит, что, если у команду управления (привязанной к элемента расписания, блоку и пр.) явно не указан получатель, то она будет отправлена в данное устройство.

Начиная с версий

  • 2.14.149
  • 2.15.11.20
  • 2.15.34

строчку SET_RMT_OUT можно указывать в нескольких CDU файлах. В более ранних версиях это строка может присутствовать только в одном CDU файле.

Синтаксиc:

SET_RMT_OUT

Индикаторы (IND, T_IND)

Синтаксиc:

IND имя индикатора размер посылки включения размер посылки выключения посылка включения посылка выключения
T_IND имя индикатора строка включения строка выключения    

Описание параметров:

Параметр Тип Значение
имя индикатора строка Название одного из существующих в системе [[digispot:Индикаторы индикаторов]]
размер посылки включения целое десятичное число Количество байт в посылке включения индикатора - перехода в активное состояние
Может быть 0, тогда *байты посылки включения *не указываются и посылка не выполняется
размер посылки выключения целое десятичное число Количество байт в посылке выключения индикатора - перехода в пассивное состояние
Может быть 0, тогда *байты посылки выключения *не указываются и посылка не выполняется
посылка включения
посылка выключения
набор чисел [0…255]10,
разделенный пробелом
Посылаемые данные. Числа могут быть записаны в десятичной системе счисления, или в шестнадцатеричной, с префиксом 0x.
12 - десятичное 12
0x12 - шестнадцатеричное 12 (десятичное 18)
строка включения
строка выключения
строка Строка, отправляемая как последовательность ASCII кодов символов. Опознаются последовательности \r \n \0
для включения "непечатных" символов; кавычки нужно дублировать (поддерживается с версии 2.17.0)

Пример:

IND   "IND_CUE_ON"  1 2 192 64 65
T_IND "IND_REC_ON" "ON\n" "OFF\n"

При переходе индикатора IND_CUE_ON в активное состояние (включение) будет послан 1 байт, равный 192, при переходе в пассивное состояние (выключении) 2 байта, сначала 64, потом 65.

Для индикатора IND_REC_ON при включении будет передана последовательность байт, представляющая собой ASCII строку ON (без кавычек) с символом перевода строки в конце. При выключении, аналогично, строка OFF с символом перевода строки в конце.

Еще пример - для консоли ТР-7 c JSON-based протоколом:

T_IND IND_CUE_ON "{""msg"":""setcue"",""state"":""on""}____preserved_4____" "{""msg"":""setcue"",""state"":""off""}____preserved_4____"

При переходе индикатора IND_CUE_ON в активное состояние (включение) будет послана строка JSON-команды

{"msg":"setcue","state":"on"}

терминированная нулевым байтом, а при переходе в пассивное состояние (выключении) будет послана строка JSON-команды

{"msg":"setcue","state":"off"}

 

Кнопки (события) (CLK_BTN)

Кнопка, это входное событие, поступающее из устройства, которое программа интерпретирует как нажатие кнопки.
При помощи кнопок и передается только информацию о факте свершения некоего события (нажатия кнопки, например).
Описанные кнопки могут быть использованы при настройке клавиатуры наравне с клавишами обычной клавиатуры и могут быть назначены на выполнение любых доступных для настройки команд.

Синтаксис:

CLK_BTN название идентификатор размер посылки байты посылки

Описание:

Параметр Тип Значение
название строка Произвольное название кнопки, отображаемое пользователю при настройке
идентификатор строка Внутренний идентификатор кнопки. Этот идентификатор система использует для поиска кнопки, сохранения конфигурации и пр.
размер посылки целое десятичное число Количество байт в посылке, прием которой обозначает наступление данного события - факт нажатия кнопки.
Больше 0.
посылка набор чисел [0…FF]16,
разделенный пробелом
Собственно принимаемые данные. Записанные в шестнадцатеричной системе счисления.
12 - шестнадцатеричное 12 (десятичное 18).
Использование десятичной системы невозможно.

Например:

CLK_BTN "Start X-player" "XP_START" 2 81 0F


Описанное событие наступит при поступлении посылки из 2-х байт: 81 и 0F.
В настройке горячих клавиш эта кнопка будет отображаться бод именем Start X-player.

На скриншоте приведен пример назначения описанной кнопки в настройке горячих клавиш на запуск Х-плеера.

hot_key_example.jpg

Кнопки (BTN)

Способ описать кнопки подобно CLK_BTN (и их в том числе) но с более широкими возможностями. Данный синтаксис доступен в версиях начиная с 2.14.10.

Синтаксис:

BTN тип название идентификатор посылка1 посылка1

Описание:

Параметр Тип Значение
тип тип кнопки CLK - только нажатие (одна посылка)
FIX - нажатие и отпускание (две посылки)
GPI - нажатие и отпускание (две посылки) Если в CDU файле описаны кнопки этого
типа из них формируется маска GPI битов (до 64-х)
название строка Произвольное название кнопки, отображаемое пользователю при настройке
идентификатор строка Внутренний идентификатор кнопки. Этот идентификатор система использует для поиска кнопки, сохранения конфигурации и пр.
посылка1 строка в кавычках При получении этой посылки происходит нажатие кнопки. Внутри кавычек содержится последовательность элементов двух типов,
разделенных пробелами, разделенных пробелами.
1 - число от 0 до 255 в десятичной (22), шестнадцатиричной (0x16) или восьмеричной (026) системе счисления.
2 - строка в кавычках "abc"
посылка2 строка в кавычках При получении этой посылки происходит отпускание кнопки

Например:

BTN CLK "Start X-player" "XP_START" "0x81 0x0f 22"


Описанное событие наступит при поступлении посылки из 3-х байт: 81h, 0Fh, 16h. Обратите внимание, что 16h соответствует 22 в десятичной системе счисления.
В настройке горячих клавиш эта кнопка будет отображаться бод именем Start X-player.

Например:

BTN CLK "Start X-player" "XP_START" " "abc" 13 10 "


Описанное событие наступит при поступлении посылки из 5-х байт: 60h(код символа ‘a’), 61h(код символа ‘b’), 62h(код символа ‘c’), 0x0d(13), 0x0a(10)

Например:

BTN FIX "Start X-player" "XP_START" " "abc" 13 10 " " "def" 13 10 "


Нажатие кнопки наступит при поступлении посылки из 5-х байт: 60h(код символа ‘a’), 61h(код символа ‘b’), 62h(код символа ‘c’), 0x0d(13), 0x0a(10)
Отпускание кнопки наступит при поступлении посылки из 5-х байт: 63h(код символа ‘d’), 64h(код символа ‘e’), 65h(код символа ‘f’), 0x0d(13), 0x0a(10)

Примеры

Примеры предназначены для изучения синтаксиса файлов.

GPI_EXPRESSION - объединение GPI сигналов

Иногда возникает необходимость формирования GPI сигнала из нескольких существующих. Для этого используется команда GPI_EXPRESSION. С ее помощью можно описать новый GPI сигнал, который вычисляется из существующих.

Синтаксис:

GPI_EXPRESSION Арифметичекское выражение

В качестве параметра в выражение передается состояние всех GPI сигналов в виде битовой маски размерностью Int64. Допускается использование арифметических операций, битовых операций, логических операций, а также круглых скобок определяющих приоритет выполнения операций. Выражение может изменять значение GPI. Формировать новые GPI сигналы ли маскировать существующие. Исходное значение передается в выражение в виде параметра src. Результат должен быть сохранен в параметр res.

Пример

Например нам нужно сформировать сигнал GPI который устанавливается в активное значение 1 в случае если GPI0 в состоянии 1, GPI3 в состоянии 1 и GPI5 в состоянии 0. В результате нужно сформировать новый GPI сигнал GPI8.
В этом случае команда будет выглядеть следующим образом:

GPI_EXPRESSION "res = (src & ~0x80) | ( ((src >> 0) & (src >> 3) & ~(src >> 5) & 1) << 8 )"

LOOPBACK. Соединение с самим собой.

При срабатывании индикатора IND_SAMPLE или при записи в устройство команды, состоящей из одного байта, равного 1, генерируется нажатие кнопки Sample control button и выполняется действие, на которое эта кнопка настроена (если это действие предварительно настроено в Настройке клавиатуры).

Примечание: Отправить в устройство команду можно при помощи привязки команды к элементу расписания (закладка Управление окна свойств элемента) или при помощи Таймера.

loopback.cdu

Подключение TR-312 через COM-порт.

Подключение через COM-порт 1.
TR-312.cdu

Сервер TCP

Серверный сокет принимает соединения из любых подсетей на порт 5300
tcp-server.cdu

Клиент TCP сервера

Клиент подключается к сокету, открываемому на адресе 192.168.0.1 порт 5300
tcp-client.cdu

Клиент UDP

Для отправки команд/текста/прочее на UDP-порт из Djin’a необходимо:
Создать файл server.cdu
В файле прописать следующее:
NAME "UDP"
CREATE_DEVICE "UDP" 0
INIT_STR "SEND_PORT=11002 MY_PORT=11002
DEFAUL_RECIPIENTS=ххх.ххх.ххх.ххх, ххх.ххх.ххх.ххх MY_IP= ххх.ххх.ххх.ххх "
Вместо ххх – свои значения
PS При отправке текстовой команды – текст необходимо писать в кавычках.
Пример использования есть в тикете
https://redmine.digispot.ru/issues/49946

Настройка ДУ в SJM с использованием CDU файлов

С помощью SJM_Remote_client.cdu отправляется команда на SJM с SJM_Remote_Server.cdu.
В обоих SJM для соответствующих конопок нужно настроить Remote button в разделе Remote contol:

Настройка ДУ в RDS с использованием CDU файлов.

Из Джинна можно отправлять команды на RDS сервис, например с использованием таймеров. Или напрямую с пульта на RDS сервис.
Для этого нужно при создании CDU файла с командами для RDS сервиса прописать "OWNER RDS_SERVICE":

пример CDU файла

Show

Микшеры AEQ Forum и Capitol

Микшеры этой серии подключаются к Джину как TCP-сервер на порту 2600. Имя линка в CDU-команде NAME может быть произвольным, нужно только для логов. Параметр INIT_STR содержит IP-адрес микшера.
Сам микшер создаётся CDU-командой AEQ_MIXER c единственным строковым параметром - именем микшера, которое может быть любым.
Управляемыми единицами для Джина являются линейки микшера, они создаются в CDU-файле командами RMT_MIXER_OPT. Команда должна содержать строку одного из двух форматов:
"CH=sssssss"
"LN=nnn"
Первый формат создает линейки по имени источника, занесенного в конфигурацию микшера (до 6 ASCII символов), второй - по номеру фэйдера. Номер фэйдера находится в диапазоне от 1 до 20, #1 - самая левая линейка микшера. Разница между заданием номера линейки и имени канала в том, что для номеров линеек назначение их на выходы плеера Джина не зависит от загруженной конфигурации микшера. Если же выходам плеера сопоставляются имена каналов микшера, то их назначение на линейки определяется конфигурацией микшера.

Пример CDU файла для микшерной консоли AEQ Forum:

//
//  .CDU file example for AEQ digital mixing consoles (Forum or Capitol)
//

NAME "AEQ-LINK"                 // имя линка
CREATE_DEVICE TCP_CLIENT 2600   // создаём линк как TCP-клиент к порту
INIT_STR "IP=172.31.1.10"       // адрес 

SET_OUT_BUF 65536               // установим размер буфера обмена
AEQ_MIXER "AEQ-MIX"             // создадим микшер типа AEQ_MIXER с именем "AEQ-MIX"

// управляемые единицы - линейки микшера
// можно создавать их по имени источника (до 6 ASCII символов) или по номеру фэйдера
// номер фэйдера находится в диапазоне от 1 до 20 (#1 - самая левая линейка)


RMT_MIXER_OPT "CH=DJin.1"
RMT_MIXER_OPT "CH=DJin.2"
RMT_MIXER_OPT "LN=6"

// RMT_MIXER_OPT "LN=1"
// RMT_MIXER_OPT "LN=2"
// RMT_MIXER_OPT "LN=3"

// RMT_MIXER_OPT "LN=7"
// RMT_MIXER_OPT "LN=8"
// RMT_MIXER_OPT "LN=9"
// RMT_MIXER_OPT "LN=10"
// RMT_MIXER_OPT "LN=11"
RMT_MIXER_OPT "LN=12"

//  END Forum config

Микшеры EEla Audio D4

Микшеры этой серии подключаются к Джину как TCP-сервер, порт сервера можно сконфигурировать в конфигурационном файле на микшере. Имя линка в CDU-команде NAME может быть произвольным, нужно только для логов. Параметр INIT_STR содержит IP-адрес микшера, или адрес и порт.

Сам микшер создаётся CDU-командой D4_MIXER c единственным строковым параметром - именем микшера, которое может быть любым.
Управляемыми единицами для Джина являются линейки микшера, они создаются в CDU-файле командами RMT_MIXER_OPT. Команда должна содержать строку с номером линейки микшера, и, опционально, её название через двоеточие.

Пример CDU файла для микшерной консоли Eela Audio D4:

//
//  .CDU file example for EELA Audio D4 digital consoles
//

NAME "EELA-D4-LINK"             // имя линка
CREATE_DEVICE TCP_CLIENT 5001   // создаём линк как TCP-клиент к порту
INIT_STR "IP=192.168.0.206 PORT=5001"     // адрес сетевого узла для пульта

SET_OUT_BUF 65536               // установим размер буфера обмена
D4_MIXER "D4-ELKA-MIX"          // создадим микшер типа D4_MIXER с именем "D4-ELKA-MIX"

// управляемые единицы - линейки микшера
// номер линейки (фэйдера) для D4 находится в диапазоне от 0 до 15
// (#0 - самая левая линейка)
// опционально можно задать имя источника, связанного с линейкой
// для Джина внутренняя нумерация линеек будет в порядке перечисления здесь от нуля
// имя, если задано после двоеточия, может включать латинские буквы, цифры и спецзнаки 
// (в диапазоне символов 32..127 таблицы ASCII)

RMT_MIXER_OPT "2:DJin-Main"
RMT_MIXER_OPT "0:Reserve"
RMT_MIXER_OPT "7"
RMT_MIXER_OPT "11:Mumbler"
RMT_MIXER_OPT "3"

AXIA Elements/AXIA Radius и др.

Эти консоли подключаются к Джину как TCP-сервер на порту 4010. Имя линка в CDU-команде NAME может быть произвольным, нужно только для логов. Параметр INIT_STR содержит IP-адрес микшера.

Сам микшер создаётся CDU-командой AXIA_MIXER c единственным строковым параметром - именем микшера, которое может быть любым.

Управляемыми единицами для Джина являются линейки микшера, они создаются в CDU-файле командами RMT_MIXER_OPT. Команда должна содержать строку одного из двух форматов:

"CH=sssssss"
"LN=nnn"


Первый формат создает линейки по имени источника, занесенного в конфигурацию микшера (раздел Console/Sources; до 10 ASCII символов, может содержать пробелы), второй - по номеру фэйдера. Номер фэйдера находится в диапазоне от 1 до 40, самая левая линейка микшера имеет номер 1. Разница между заданием номера линейки и имени канала в том, что для номеров линеек назначение их на выходы плеера Джина не зависит от загруженной конфигурации микшера. Если же выходам плеера сопоставляются имена каналов микшера, то их назначение на линейки определяется конфигурацией микшера. При перезагрузке профилей консоли привязка фэйдеров, указанных в RMT_MIXER_OPT именем источника, может меняться.

Для консолей QoR (Radius и т.п.) рекомендуется использовать LN команды, а не CH.

Команда RMT_MIXER_OPT также может содержать спецификацию опции для установки интервала времени между ответом микшера и посылкой следующей команды:

"T2=nnn"


Время задается в миллисекундах. При отсутствии такой команды в файле .cdu после инициализации используется значение T2=20 миллисекунд. Для консолей QoR (Radius и т.п.) с медленным процессором рекомендуется значение порядка 100 мс, иначе консоль будет подвисать при работе. Для Elements можно установить время порялка 10-20 миллисекунд.

Количество линеек (N) данного микшера, связанных с Джином соответствует количеству строк RMT_MIXER_OPT с командами CH или LN.
ДУ данного устройства формирует для Джтна N+N флагов GPI: первые N связаны с состоянием открытия "OnAir" линеек, следующие N - с состоянием "Preview".

Образец конфигурационного .cdu файла для использования AXIA Elements с дистанционным управлением DJin:

//
//  .CDU file example for AXIA digital mixing consoles via LWCP protocol
//

NAME "AXIA-ELEMENTS-LINK"       // имя линка
CREATE_DEVICE TCP_CLIENT 4010   // создаём линк как TCP-клиент к порту LWCP микшера
INIT_STR "IP=172.22.0.2"        // адрес 

SET_OUT_BUF 65536               // установим размер буфера обмена
AXIA_MIXER "AXIA-ELEMENTS-MIXING-CONSOLE"   // создадим микшер типа AXIA_MIXER с именем "AXIA-ELEMENTS-MIXING-CONSOLE"

// опция установки интервала между последним ответом консоли и посылкой команд 
// опроса консоли (от 1 до 10000 миллисекунд )

RMT_MIXER_OPT "T2=10"

// управляемые единицы - линейки микшера
// можно создавать их по номеру фэйдера или по имени источника 
// в имени источника лучше использовать ASCII символы: латиница, цифры, знаки (коды от 32 до 126)
// номер фэйдера находится в диапазоне от 1 до 40 (#1 - самая левая линейка)

RMT_MIXER_OPT "CH=DJin1 MAIN"
RMT_MIXER_OPT "CH=DJin2 MAIN"
RMT_MIXER_OPT "CH=DJin3 MAIN"

RMT_MIXER_OPT "LN=12"

Образец конфигурационного .cdu файла для использования AXIA Radius с дистанционным управлением DJin:



//
//  .CDU file example for AXIA digital mixing consoles via LWCP protocol
//

NAME "AXIA-RADIUS-LINK"     // имя линка
CREATE_DEVICE TCP_CLIENT 4010   // создаём линк как TCP-клиент к порту LWCP микшера
INIT_STR "IP=172.22.0.2"        // адрес 

SET_OUT_BUF 65536               // установим размер буфера обмена
AXIA_MIXER "AXIA-RADIUS-MIXING-CONSOLE" // создадим микшер типа AXIA_MIXER с именем "AXIA-RADIUS-MIXING-CONSOLE"

// опция установки интервала между последним ответом консоли и посылкой команд 
// опроса консоли (от 1 до 10000 миллисекунд )
// для RADIUS лучше порядка 100 мс

RMT_MIXER_OPT "T2=100"

// управляемые единицы - линейки микшера
// создавать по номеру фэйдера (#1 - самая левая линейка)

RMT_MIXER_OPT "LN=3"
RMT_MIXER_OPT "LN=7"

TP-7 Traсt и TP-9 Clyde Broadcast

Консоль TP-7 компании ТРАКТ поддерживает JSON-based протокол управления [[tr-7:Протокол_для_приложений_управления_микшером]] встроенный в контроллер данной консоли. В программном обеспечении контроллера реализован TCP-сервер, обслуживающий IP порт для подключения управляющих приложений (порт 12010 по умолчанию).

Консоль Clyde Broadcast подключаются к порту USB компьютера, и для работы с ними через TCP и тот же самый протокол существует специальный сервис, служащий посредником. Он создает TCP-сервер (по умолчанию на порту 40008), к которому может подключиться модуль ДУ DJin, и управляет микшером через USB порт.

Как обычно, имя линка в CDU-команде NAME может быть произвольным, нужно для логов и для ссылок в секции параметров "Дистанционное управление" X-плеера.

Параметр в CDU-команде INIT_STR содержит IP-адрес микшера в виде строки.

Сам объект микшера в модуле ДУ DJin создаётся одной из следующих CDU-команд (в зависимости от типа подключаемого микшера):

TR7_MIXER "имя-микшера"
TR9_CLYDE_MIXER "имя-микшера"

c единственным строковым параметром - именем микшера, которое может быть любым. Это имя следует использовать при настройке в панели виртуального микшера DJin, если она создается в VID-файле.

Управляемыми единицами для Джина являются линейки микшера, они создаются в CDU-файле командами RMT_MIXER_OPT. Для каждой линейки CDU файл должен содержать строку одного из следующих форматов:

RMT_MIXER_OPT "LN=nnn"
RMT_MIXER_OPT "CH=xxx"


Либо задается номер линейки (фэйдера) - nnn, либо задается имя линейки (фэйдера) - xxx.
Номера фэйдеров находится в диапазоне от 1 до 16, самая левая линейка микшера имеет номер 1.
Имена линеек должны содержать только валидные символы таблицы кода ASCII, включая пробелы.

Для TR-7 линейки пронумерованы следующим образом: 1 - Mic1, 2 - Mic2, 3 - Mic3/Line, 4 - Tel/BT, 5 - Ws1/Main, 6 - Ws2/Main, 7 - Ws3/Main, 8 - Ws1/Rec, 9 - Ws2/Rec, 10 - Ws3/Rec, 11 - Ext. На передней панели консоли находятся 8 фэйдеров, соответствующие линейкам 1, 2, 3, 4, 5/8, 6/9, 7/10 и 11. Фэйдеры с 5 по 7 привязываются к линейкам 5-7 или 8-10 в зависимости от включения режима "REC" консоли.

Количество линеек (N) данного микшера, связанных с Джином соответствует количеству строк RMT_MIXER_OPT с командами CH или LN. Панель виртуального микшера в Джине создается с N линейками.

Модуль ДУ данного устройства формирует для Джина N+N флагов GPI: первые N связаны с состоянием открытия "OnAir" линеек, следующие N - с состоянием "PFL". С ними можно связывать действия в настройках ДУ X-плеера.

Модуль ДУ микшеров TP-7/TP-9 поддерживает привязку команд плееров, превью и других модулей Джина к кнопкам пульта. Например, для TR-9 можно привязать запуск предпросмотра медиафайлов к кнопке "CUE" на правой панели микшера.

Для TR-7 доступны следующие параметры, связанные с виртуальными кнопками F1...F5 сенсорном экране консоли: "F1.State", "F2.State", "F3.State", "F4.State", "F5.State", при нажатии кнопок они посылают уведомления on/off, и их можно связать с горячими клавишами DJin. Также, можно изменять имена и цвет кнопок с помощью параметров "F1.Color", "F2.Color", "F3.Color", "F4.Color", "F5.Color" и "F1.Text", "F2.Text", "F3.Text", "F4.Text", "F5.Text". По умолчанию имена кнопок Play, Stop, Man, Live, Auto. Параметры групп Color/Text не посылают уведомлений, поэтому они не используются для создания горячих клавиш, но команды установки цвета и текста можно использовать в конфигурируемых командах индикаторов.

Например, для переключения цвета кнопки F2 и текста на кнопке F5 при включении записи в аудиоредакторе (флаг ) можно использовать такую строку в .cdu файле для ТР-7:


T_IND IND_REC_ON  "{""msg"":""setpar"",""id"":""F2.Color"",""val"":""10526975""}{""msg"":""setpar"",""id"":""F5.Text"",""val"":""REC.ON""}____preserved_19____" "{""msg"":""setpar"",""id"":""F2.Color"",""val"":""8421552""}{""msg"":""setpar"",""id"":""F5.Text"",""val"":""REC.OFF""}____preserved_19____"

или


T_IND IND_REC_ON  "[{""msg"":""setpar"",""id"":""F2.Color"",""val"":""10526975""},{""msg"":""setpar"",""id"":""F5.Text"",""val"":""REC.ON""}]____preserved_20____" "[{""msg"":""setpar"",""id"":""F2.Color"",""val"":""8421552""},{""msg"":""setpar"",""id"":""F5.Text"",""val"":""REC.OFF""}]____preserved_20____"

Образец конфигурационного .cdu файла для использования консоли TR-7 с дистанционным управлением DJin:


//
//  .CDU file example for TR-7 broadcasting mixing console
//

NAME "TR7-LINK"        // имя линка
CREATE_DEVICE TCP_CLIENT 12010  // создаём линк как TCP-клиент к порту
INIT_STR "IP=192.168.0.135"     // адрес консоли

SET_OUT_BUF 65536      // установим размер буфера обмена
TR7_MIXER "TR7-MIX"    // создадим микшер типа TR7_MIXER с именем "TR7-MIX"

// управляемые единицы - линейки микшера
// можно создавать их по имени источника или по номеру фэйдера
// номер фэйдера находится в диапазоне от 1 до 12 (#1 - самая левая линейка)

RMT_MIXER_OPT "CH=Mic1"
RMT_MIXER_OPT "CH=Mic2"
// RMT_MIXER_OPT "LN=1"
// RMT_MIXER_OPT "LN=2"
RMT_MIXER_OPT "LN=3"
RMT_MIXER_OPT "LN=4"
RMT_MIXER_OPT "LN=5"
RMT_MIXER_OPT "LN=6"
RMT_MIXER_OPT "LN=7"
RMT_MIXER_OPT "LN=8"
RMT_MIXER_OPT "LN=9"
RMT_MIXER_OPT "LN=10"
RMT_MIXER_OPT "LN=11"

//  create DJin hot keys for TR-7 mixer button parameters

RMT_MIXER_OPT "HK=    F1.State  ,  on    ,  F1 Button (Play)"
RMT_MIXER_OPT "HK=    F2.State  ,  on    ,  F2 Button (Stop)"
RMT_MIXER_OPT "HK=    F3.State  ,  on    ,  F3 Button (Man)"
RMT_MIXER_OPT "HK=    F4.State  ,  on    ,  F4 Button (Live)"
RMT_MIXER_OPT "HK=    F5.State  ,  on    ,  F5 Button (Auto)"

// create CUE_ON indicator interface to JSON-based mixer

T_IND IND_CUE_ON "{""msg"":""setcue"",""state"":""on""}____preserved_21____" "{""msg"":""setcue"",""state"":""off""}____preserved_21____"

Для TR-9 доступны следующие параметры, связанные с кнопками консоли: "intro_button", "outro_button", "link_button", "forward_button", "backward_button", "cue_button" and "play_button", имена соответсвуют кнопкам на пульте Clyde/TP-9. DJin имеет кастомный модуль, который умеет работать с этими кнопками.

Горячие клавиши назначаются с помощью команд RMT_MIXER_OPT в CDU файле, с параметром HK и значением из трех разделенных запятой подстрок: имя параметра, связанное с кнопкой, затем - значение, посылаемое в параметре (для всех упомянутых параметров кнопок оно on/off), затем информационная строка для панели настройки горячих клавиш Джина. Например, для кнопки CUE на TR-9:

RMT_MIXER_OPT "HK=cue_button,on,CUE button pressed"

Образец конфигурационного .cdu файла для использования консоли Clyde Broadcast с дистанционным управлением DJin:


//
//  .CDU file for Clyde Broadcast mixing console
//

NAME "CLYDEBROADCAST-MIXER-LINK"   // link name
CREATE_DEVICE TCP_CLIENT 40008     // TCP port on console to connect to (from DJin)
INIT_STR "IP=62.30.212.174"        // IP address of console's TCP server

SET_OUT_BUF 65536                  // DJin buffer size

TR9_CLYDE_MIXER "CLYDEBROADCAST-MIXER"   // create mixer with given name

//  controlled items are mixing console lines
//  can be addressed via name or via console line number (starting from one left-to-right)

// RMT_MIXER_OPT "CH=Mic1"
// RMT_MIXER_OPT "CH=Mic2"
RMT_MIXER_OPT "LN=1"
RMT_MIXER_OPT "LN=2"
RMT_MIXER_OPT "LN=3"
RMT_MIXER_OPT "LN=4"

//  create DJin hot keys for Clyde mixer button parameters 

RMT_MIXER_OPT "HK=    mic_on           ,  on    ,  Microphone is ON"
RMT_MIXER_OPT "HK=    settings         ,  open  ,  Settings window is opened"
RMT_MIXER_OPT "HK=    commutation      ,  open  ,  Commutation window is opened"
RMT_MIXER_OPT "HK=    intro_button     ,  on    ,  INTRO button pressed"
RMT_MIXER_OPT "HK=    outro_button     ,  on    ,  OUTRO button pressed"       
RMT_MIXER_OPT "HK=    link_button      ,  on    ,  LINK button pressed"
RMT_MIXER_OPT "HK=    forward_button   ,  on    ,  FORWARD button pressed"
RMT_MIXER_OPT "HK=    rewind_button    ,  on    ,  BACKWARD button pressed"
RMT_MIXER_OPT "HK=    cue_button       ,  on    ,  CUE button pressed"
RMT_MIXER_OPT "HK=    play_button      ,  on    ,  PLAY button pressed"

 

ДУ для консолей Lawo с протоколом Ember+

Консоли с протоколом Ember+ поддерживаются в D2 начиная с релиза 2.17.2.281. Данный протокол позволяет адресоваться к параметрам и переменным состояния консоли посредством путей, напоминающих файловые пути в Linux, например:

"PowerCore/Sources/JINGLE/Fader/Motor dB Value"

"PowerCore/GPIOs/ROAD_GPIO/Input Signals/GPI_OFF AIR AKTIV/State"

Примечание: Логическую модель конкретного устройства с управлением по протоколу Ember+ , то есть т.н. ember-дерево можно получить с помощью программы Ember+ Viewer, скачать её можно здесь. Данная программа позволяет получить дерево с именами всех параметров устройства.

В .CDU файле для данного вида консолей ember-пути используются для указания адресов следующих параметров и переменных состояния:

  • позиция ползунка фейдера в децибелах для некоторой линейки;
  • состояние сигнала "Fader Start" для некоторой линейки;
  • переменные дискретных входов GPI сигналов консоли;
  • кнопок или переключателей консоли, которые можно использовать как горячие клавиши в Джине.

В ember-дереве параметрам приписываются типы. В реализации модуля ДУ D2 для данного протокола параметры "позиция ползунка фейдера" должны быть типа Real или Integer, а остальные сигналы должны быть типов Boolean, Integer, Enum.

Консоли Lawo для подключения удаленного управления создают TCP-сервер, обычно используется порт 9000. Для работы с ними в .CDU файле D2 должны присутствовать следующие команды:

     NAME "имя-линка"                // link name
     CREATE_DEVICE TCP_CLIENT порт   // the link is a TCP client to port 9000
     INIT_STR "IP=адрес"             // IP-address of Lawo mixer console
     SET_OUT_BUF 65536               // set DJin TCP buffer size

Как обычно, имя линка в CDU-команде NAME может быть произвольным, нужно для логов и для ссылок в секции параметров "Дистанционное управление" X-плеера.

Параметр в CDU-команде INIT_STR содержит IP-адрес микшера в виде строки.

Сам объект ДУ микшера Lawo в модуле ДУ DJin создаётся следующей CDU-командой:

     LAWO_MIXER "имя-микшера"

c единственным строковым параметром - именем микшера, которое может быть любым. Это имя следует использовать при настройке в панели виртуального микшера DJin, если она создается в VID-файле.

Линейки микшера создаются в CDU-файле командами RMT_MIXER_OPT. Для каждой линейки CDU файл должен содержать строку следующего формата:

     RMT_MIXER_OPT "LN:параметр1;параметр2;параметр3"

Параметры определяют следующее:

  • параметр1 - ember-путь к переменной "положение ползунка фейдера в децибелах" для линейки (типа Real/Integer);
  • параметр2 - имеет два возможных формата. Может быть указан либо ember путь к переменной состояния сигнала "Fader Start" для линейки (типа Boolean/Integer/Enum), либо символ решетки # и затем число. В последнем случае модуль ДУ эмулирует флаг состояния сигнала "Fader Start" для данной линейки по положению фейдера:  "Fader Start" == true в случае, когда позиция фейдера в дБ выше указанного числа;
  • параметр3 - ember-путь к переменной состояния PFL для данной линейки (типа Boolean/Integer/Enum).

В .CDU файле для может быть указано несколько таких команд RMT_MIXER_OPT "LN:...", которые создадут первую, вторую, третью и т.д. линейки по порядку их перечисления в файле.

Конфигурация доступа ко входам GPI микшера определяется командами RMT_MIXER_OPT. Для каждой линейки CDU файл должен содержать строку следующего формата:

     RMT_MIXER_OPT "GPI:имя=путь"

Параметры определяют имя GPI-сигнала и ember-путь к переменной состояния сигнала GPI в дереве микшера. Имя GPI-сигнала предназначено для использования внутри данного CDU-файла в командах T_IND, которые позволяют связать индикаторы Джина и устанавливаемые/сбрасываемые GPI флаги в микшере. Примечание: В Джине далее индикаторы используются как имена для SJM/NJM "Remote button name", и могут активироваться при прохождении меток START/STOP/INTROx/OUTRO/START-THIS/START-NEXT проигрываемого медиа элемента, назначенного на кнопку SJM/NJM.

Наконец, с помощью команд RMT_MIXER_OPT можно сконфигурировать "удаленные кнопки" DJin связанные с переменными состояния пульта. Для каждой "удаленной кнопки" CDU файл дожен содержать команду следующего формата:

     RMT_MIXER_OPT "KEY:имя=режим;минимум;максимум;путь"
  • путь - ember-путь к переменной состояния кнопки или переключателя пульта (типа Boolean/Integer/Enum);
  • режим - 0 (клавиша) или 1 (переключатель);
  • минимум - минимальное значение ember-переменной (для bool == 0);
  • максимум - максимальное значение ember-переменной (для bool == 1).

Для обычных кнопок команда должна выглядеть так:

     RMT_MIXER_OPT "KEY:имя=0;0;1;путь"

В запущенном приложении DJin данные "удаленные кнопки" можно назначать в качестве горячих клавиш для вызова различных действий, наравне с клавишами обычной клавиатуры. Это делается с помощью диалога, вызываемого из меню Sertvice/Customize keyboard.

Команда RMT_MIXER_OPT в конфигурационном CDU файле для устройства с Ember протоколом также позволяет включить отладочное средство - печать обмена командами с устройством в DEBUG_LOG Джина. Это можно сделать командой:

     RMT_MIXER_OPT "TRACE=EMBER"

Пример конфигурационного .cdu файла для использования консоли с дистанционным управлением по протоколу Ember:


NAME "LAWO-LINK"          // link name
CREATE_DEVICE TCP_CLIENT 9000   // the link is a TCP client to port 9000
INIT_STR "IP=192.168.0.123"     // IP-address of Lawo mixer console
SET_OUT_BUF 65536        // set DJin TCP buffer size
LAWO_MIXER "LAWO-MIX"    // create LAWO_MIXER remote control in DJin with name "LAWO-MIX"

RMT_MIXER_OPT "TRACE=EMBER"  // switch ON ember messages exchange trace in DJin debug log

// Notes on this CDU config file:
// (1) Ember paths in RMT_MIXER_OPT definitions specify paths through nodes sequences separated by slash
//     character "/". Blanks are ok, have to be written exactly as seen in EmberViewer. The last item 
//     in ember path must be a leaf node (parameter).
//     Ember path example: "root/node 1/node 2/node 3/parameter".
// (2) For switches, GPI and hotkeys Boolean/Integer/Enum parameters can be used. 
//     For fader values the parameter type must be Real/Integer, the value in decibels.
// (3) CDU parser accepts both lowcase and uppercase characters in RMT_MIXER_OPT definitions.
//     Characters = : / ; are reserved and must not be used in names.
//     Ember+ paths can contain any characters, but ; / and \ must be escaped with \
//     Function part (LN/GPI/KEY) are not case sensitive.
//     Names in ember paths are case sensitive and must be written exactly as in ember tree EmberViewer.

// Controlled mixer lines
//   Syntax:  RMT_MIXER_OPT "LN:LineName=EmberPath1;EmberPath2;EmberPath3"
//    == LineName   == Name of mixer's line
//    == EmberPath1 == Line's fader value in decibels; Real/Integer parameter
//    == EmberPath2 == Line's "fader start" flag; Boolean/Integer/Enum parameter
//       in case when param specified as #FloatNumb it's not ember path but fader level threshold to simulate line's "fader start" state
//    == EmberPath3 == Line's PFL flag; Boolean/Integer/Enum parameter

RMT_MIXER_OPT "LN:Jingle=PowerCore/Sources/JINGLE/Fader/Motor dB Value;#-100.0;PowerCore/Sources/JINGLE/Aux Busses/PFLs/State"
//RMT_MIXER_OPT "LN:Jingle=PowerCore/Sources/JINGLE/Fader/Motor dB Value;PowerCore/Sources/JGLPFL/States/Fader Result Start;PowerCore/Sources/JINGLE/Aux Busses/PFLs/State"

// Mixer GPI signals
//   Syntax: RMT_MIXER_OPT "GPI:GPIName=EmberPath"
//    == GPIName   == Name of GPI flag(bit)
//    == EmberPath == GPI flag; Boolean/Integer/Enum parameter

RMT_MIXER_OPT "GPI:GPI_SJM_StartNext=PowerCore/GPIOs/ROAD_GPIO/Input Signals/GPI_SJM Start NEXT/State"
RMT_MIXER_OPT "GPI:GPI_OneTouchActiv=PowerCore/GPIOs/ROAD_GPIO/Input Signals/GPI_ONE TOUCH AKTIV/State"
RMT_MIXER_OPT "GPI:GPI_OffAirActiv=PowerCore/GPIOs/ROAD_GPIO/Input Signals/GPI_OFF AIR AKTIV/State"

// Connect DJin indicators to GPI signals:
//   Syntax: T_IND "NAME" "+GPIName1" "-GPIName2"
//    == NAME is used as a name of created DU indicator
//       can be used e.g. as a "Remote button name" for jingle machine buttons
//    == GPIName1 -- GPI for setting state TRUE
//    == GPIName2 -- GPI for setting state FALSE

T_IND "IND_SJM_StartNext" "+GPI_SJM_StartNext" "-GPI_SJM_StartNext"
T_IND "IND_OneTouchActiv" "+GPI_OneTouchActiv" "-GPI_OneTouchActiv"
T_IND "IND_OffAirActiv" "+GPI_OffAirActiv" "-GPI_OffAirActiv"

// Mixer remote keys (to use buttons on mixer as keystrokes on DJin computer keyboard)
//   Syntax: RMT_MIXER_OPT "KEY:KeyName=mmm;min;max;EmberPath"
//    == KeyName   == Name of key (will be visible in DJin's customize keyboard dialog)
//    == mmm       == 0 -- keystroke mode; 1 -- toggle mode
//    == min       == minimum ember variable value (0 for boolean)
//    == max       == maximum ember variable value (1 for boolean)
//    == EmberPath == mixer's button state; Boolean/Integer/Enum parameter

RMT_MIXER_OPT "KEY:Lawo Console Green Key=0;0;1;PowerCore/Sources/JGLPFL/MF Keys/Green Key"
RMT_MIXER_OPT "KEY:Lawo Console Red Key=1;0;3;PowerCore/Sources/JGLPFL/MF Keys/Red Key"
RMT_MIXER_OPT "KEY:Lawo Console Blue Key=1;0;3;PowerCore/Sources/JGLPFL/MF Keys/Blue Key"

 

Создание виртуального микшера в CDU файле

Виртуальный микшер не связан с физическим устройством и не выполняет никакий дейсвий по изменению уровня звука. Он предназначеся для обеспечения связи между модулем управления микшером и плеером, который выполняет регулировку уровня.
Состояние виртуального микшера сохраняется при перезагрузке или нештатном завершении приложения.

Рекомендации по использованию виртуального микшера можно посмотреть здесь: Управление_микшером

При создании виртуального микшера ему задается кол-во линеек (X - кол-во линеек).

NUM_CHANNELS=X

Пример CDU файла для создания виртуального микшера:

NAME "LOOP"
CREATE_DEVICE   "LOOPBACK" 1
SET_RMT_OUT

VIRTUAL_MIXER "Virtual"

RMT_MIXER_OPT "NUM_CHANNELS=6"

Add picture from clipboard (Maximum size: 742 MB)