Summary

  • Web MIDI даёт приложению доступ к входным и выходным MIDI-портам: можно принимать сигналы клавиатуры и отправлять сообщения синтезатору или световому пульту. MIDI передаёт события и команды, а не звук.
  • Идентификаторы портов показывают, какие приборы стоят у пользователя. System Exclusive, или SysEx, обращается к функциям конкретного устройства; этот канал получил более строгое разрешение.

Проект W3C от декабря 2012 года предложил не виртуальный синтезатор, а дорогу к настоящему. Браузер перечисляет MIDI-входы и выходы, принимает и посылает сообщения. Клавиатура, драм-машина, внешний синтезатор и сценическое освещение укладываются в одну схему. Сообщение сообщает, что нажата нота, изменён регулятор или пришёл тактовый импульс. Звучит сам инструмент. Браузер может махать дирижёрской палочкой, но оркестр всё ещё подключён к розетке.

Такой низкоуровневый подход оставляет смысл приложениям. Один и тот же регулятор может управлять вибрато, яркостью света или чем-то, о чём барабанщик предпочёл бы не знать. Браузеру достаточно передать сообщение. Владелец сохраняет привычное железо и меняет программы без смены клавиш. Впрочем, само обнаружение железа — уже доступ к информации. Ранний текст предлагал для порта устойчивый fingerprint: приложение смогло бы найти ту же клавиатуру после перезапуска. Это помогает в студии с несколькими похожими приборами и одновременно раскрывает часть её инвентаря. Производитель, имя и версия порта дополняли картину. Проект прямо обсуждал риски перечисления устройств и специальных сообщений.

Особый разговор начинается с System Exclusive. Обычное MIDI-сообщение велит взять ноту или сдвинуть значение. SysEx говорит на языке производителя: через него можно получать или менять пресеты, настройки и другие данные конкретного устройства. Страница, желающая играть мелодию, просит не то же самое, что страница, желающая перебрать внутреннюю память синтезатора. Проект марта 2015 года оформил различие как requestMIDIAccess({sysex:true}). Если дополнительное право не дали, такой запрос завершается неудачей. В репетиционную пустили; ключ от мастерской оставили на отдельном крючке.

Реальная репетиция быстро добавляет менее эффектные проблемы. Провод можно вынуть посреди композиции. Ноту, назначенную на определённое время, нельзя выпускать с опозданием: ухо заметит её раньше, чем разработчик увидит журнал ошибок. Приложение может находиться внутри чужой страницы. API описывает состояние портов и отправку по времени, но не решает за музыканта, что значит конкретная ручка. Браузер занимается движением сообщений, а не аранжировкой.

В проекте W3C от 20 октября 2026 года правила входа точнее. Разрешение называется midi, а sysex: true сильнее обычного доступа. Без него отправка SysEx вызывает исключение, входящие сообщения SysEx скрываются. requestMIDIAccess() работает в безопасном контексте. У функции midi в Permissions Policy список разрешённых источников по умолчанию — 'self': встроенный на страницу гость не получает ключ от студии просто за место в рамке. Документ также рассматривает возможное воздействие специальных команд на уязвимое оборудование. Это анализ риска, а не хроника доказанных атак на все старые синтезаторы.

История публикаций W3C отмечает проекты 2012, 2013 и 2015 годов, затем новую серию в 2024–2026 годах. Даты относятся к стандарту; они не означают, что все браузеры одновременно получили одинаковую реализацию. Вопрос остался прежним: как дать странице поговорить с инструментом, не приглашая её осматривать каждый ящик в комнате?

Музыкант снова нажимает клавишу. Нота доходит до программы, синтезатор отвечает. Старому инструменту не пришлось притворяться сайтом. Браузер оказался хорошим посредником именно потому, что для внутренней мастерской сохранил отдельный пропуск.