Синхронизация Роман Вакулюк / ROMA ROBOT

Синхронизация. Часть VIII RTP-MIDI (Apple MIDI)

Роман Вакулюк / ROMA ROBOT

Благодаря тому, что интерфейс передачи MIDI полностью цифровой, пакеты данных MIDI можно без особых изменений передавать через более современные и быстрые интерфейсы. Ассоциация MMA понимала, что MIDI стал довольно популярным стандартом для работы в разных индустриях, но при этом развитие этого стандарта упиралось в технические особенности физического серийного интерфейса, на котором базировался MIDI. И тогда MMA стала смотреть в сторону других успешных технологий передачи данных, чтобы уйти от технических недостатков прежнего. В итоге начали появляться новые технологии передачи MIDI.

RTP (Real-time Transport Protocol) – протокол высокого уровня, который базируется на UDP, но при этом имеет свои особенности, которые были специально разработаны для стриминга аудио и видео. Основная его особенность в том, что каждое сообщение этого протокола имеет в заголовке абсолютное время отправки, которое может прочитать принимающие устройство и определить задержку и порядок доставки сообщений. Такие преимущества идеально подошли для MIDI, и в 2004 году появилась первая версия протокола RTP-MIDI.

Позже компании Apple включила этот протокол в состав своих операционных систем и стала активно дорабатывать его. Вследствие этого протокол получил второе название: Apple MIDI. Позже был написан отдельный драйвер для Windows и Linux, который позволял использовать этот протокол в данных системах.

Как и в случае с OSC, протокол базируется на физическом интерфейсе Ethernet, поэтому RTP-MIDI наследует все преимущества этого интерфейса передачи данных. И чтобы использовать протокол RTP-MIDI, так же, как с OSC, необходимо поднять сеть, в которой будут находиться все ваши сетевые клиенты. Как это сделать, мы уже обсудили в предыдущей статье (Синхронизация. Новый уровень шоу. V2. NETWORK. OSC (Open Sound Control) для шоу, «Шоумастер» № 4 2018).

Давайте теперь поговорим об идеологии этого протокола. В RTP-MIDI есть такое понятие, как сессия. Сессия — это виртуальная среда, к которой могут подключаться клиенты, чтобы обмениваться MIDI-сообщениями. Для начала в сети должен быть тот, кто создаст эту сессию. Это может быть компьютер либо другое устройство.

Создатель сессии будет являться мастер-устройством или, говоря терминологией RTP-MIDI, инициализатором сессии. После того как в сети будет создана сессия, другие клиенты могут к ней подключиться и стать ее участниками. В сети может быть создано несколько сессий, и они будут работать независимо. Удобно, что клиент сам может выбрать, к какой сессии подключиться. Когда компьютер стал участником сессии, в операционной системе появляются виртуальные MIDI-порты, которые могут использовать приложения для приема и передачи MIDI-сигнала.

Одним из важных преимуществ RTP-MIDI является то, что уже на уровне этого протокола реализованы схемы разделения и смешивания MIDI-сигналов (Split/Merge). Ниже представлена простейшая схема транспорта сообщений между разными участниками сессии: инициализатором сессии является устройство номер один, к которо подключены другие участники сети. При отправлении MIDI-сообщения с главного устройства (Device 1) оно автоматически дублируется на все остальные. При этом если сообщения отправят другие клиенты сессии (Device 2 и Device 3), они будут получены только инициализатором сессии, т.е. устройством номер один. И эти сообщения будут автоматически соединены и направлены на его виртуальный MIDI IN порт.

Так как RTP-MIDI – это, по сути, лишь способ передачи MIDI через Ethernet, все, что касается протокола MIDI, остается прежним. Единственное отличие – способ доставки MIDI-сообщений.
Предлагаю разобрать пример , как создать RTP-MIDI сессию и как подключить к ней клиентов для обмена сообщениями. Чтобы в будущем вы сами решали, использовать физические MIDI-карты и коммутацию для работы и экспериментов или сетевую альтернативу RTP-MIDI.
Ниже представлен список операционных систем и названия программ, которые обеспечивают системе возможность работы с протоколом RTP-MIDI.

Некоторые программисты, возможно, спросят: а где же Linux? Существуют библиотеки, которые позволяют интегрировать поддержку этого протокола внутрь отдельной программы в момент разработки приложения программистами, такие библиотеки есть для всех операционных систем, в том числе и Linux. Приложения под Windows и Android были написаны программистами-энтузиастами, которые выложили свои программы в открытый доступ, за что им огромное спасибо.

Если вы пользователь устройств Apple, вы счастливчик: вам устанавливать ничего не нужно, я уже говорил, что RTP-MIDI интегрирован в системы MAC OS и iOS. А вот для других операционных систем нужно скачивать специальные драйверы и программное обеспечение.

Предлагаю создать сессию в системе MAC OS. Приложение для Windows выглядит абсолютно идентично: с таким же интерфейсом и функционалом.
Для тестов я буду использовать MAC Book. Чтобы открыть меню для работы с RTP-MIDI в MAC OS, зайдите в папку Applications и откройте приложение Audio MIDI Setup. Если окно настроек аудио откроется без окна MIDI, в панели меню откройте Window и в выпадающем меню нажмите на опцию Show MIDI Studio – перед вами появится окно, содержащие устройства MIDI.
Для работы с RTP-MIDI нам нужно нажать на иконку глобуса в верхнем правом углу. Давайте разберемся, что здесь к чему.

Чтобы создать новое подключение, необходимо:

  1. Создать новую сессию. Для этого нажмите кнопку + ниже окна My Sessions.

  2. Ниже раздела Sessions, с правой стороны окна настройки RTP-MIDI, необходимо указать номер порта, который будет использоваться для передачи и приема этого протокола. Как мы помним, RTP-MIDI использует низкоуровневый протокол UDP, а потому для приема и передачи данных мы должны указать конкретный порт. По умолчанию RTP-MIDI использует порт 5004, но, если он уже занят каким-нибудь приложением, вы можете указать любой другой свободный порт.
    Далее необходимо указать Local name, это имя виртуальной MIDI-карты, которая будет использоваться в нашей системе. Также необходимо указать Bonjour name, это имя сессии, которую будут видеть клиенты в сети.

  3. Теперь нужно активировать сессию, для этого необходимо поставить галочку напротив Eneblade верхней части окна Sessions.

  4. Также необходимо настроить правила безопасности, которые позволяют подготовить права подключения к сессии. В нижней части окна настроек RTP-MIDI cлева раскройте выпадающий список Who can connect to me и выберите одну из опций. Так как клиенты сами могут подключаться в сессию, иногда нужно ограничить правила подключения.

  5. Если необходимо добавить нового клиента вручную, нажмите кнопку + ниже окна Directory и введите имя, адрес и порт клиента, который должен стать участником вашей сессии.

  6. И в завершение, чтобы добавить клиентов в вашу сессию, выберите устройство в окне Directory и нажмите кнопку Connect. Если клиент успешно добавлен в сессию, он появится в окне Participants.

Хотел бы также упомянуть об очень удобной опции, которая позволяет перенаправить потоки MIDI c сессии на физическое устройство и наоборот. Для этого в правой нижней части программы напротив Live routings раскройте необходимый список оборудования на вход или выход и выберите MIDI-порт, на который нужно направить поток с сессии или наоборот в сессию. В этом случае ваш компьютер выступает как конвертер, который преобразует физический MIDI и сетевой RTP-MIDI.

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

Во-вторых, для работы с RTP-MIDI нет необходимости использовать MIDI-карты для передачи сообщений MIDI, так как протокол был создан для работы через локальную сеть, для подключения к сети достаточно иметь любое устройство с сетевой картой.

Третья особенность вытекает из второй: благодаря тому, что этот интерфейс работает через локальную сеть, он наследует все преимущества сетевых технологий передачи данных Ethernet, Wi-Fi и оптоволокна, включая дальность передачи и скорость сигнала, что является одним из слабых мест классического интерфейса MIDI.
И в-четвертых, в RTP-MIDI сессии уже реализована идеология соединения и разделения MIDI-сигнала между клиентами, что позволяет отказаться от использования специализированных MIDI сплиттеров и мерджеров.

Забегая вперед, скажу, что RTP-MIDI – это не единственная современная модификация MIDI-интерфейса, подробнее об этом в следующих статьях.
Кстати, если у вас есть конкретные вопросы или пожелания по темам, которые вы бы хотели разобрать вместе со мной на страницах журнала «Шоумастер», можете смело писать мне на почту и в редакцию журнала. До встречи в следующих статьях!


Остались вопросы? Тогда пиши. Facebook, Instagram, Behance, Telegram
Журнал Шоу Мастер. от 3 2019 (98)