MIDI-клавиатура в браузере.
Подключаешь клавиатуру, открываешь вкладку, нажимаешь клавишу, и она играет. Без драйвера и без секвенсора. Как это устроено, где работает и что делать, если страница клавиатуру не видит.
Для этого есть стандарт Web MIDI. Страница не лезет в USB сама: она просит браузер, а браузер выступает посредником между ней и клавиатурой.
Как это устроено
Страница просит доступ к MIDI-устройствам, браузер спрашивает вас, и после разрешения каждое нажатие клавиши приходит на страницу как короткое сообщение. Всё остальное делает скрипт страницы: он решает, каким звуком отвечать.
Условия простые. Страница должна открываться по https. Браузер должен показать запрос на доступ: Chrome ввёл его для всех MIDI-страниц в версии 124. Большинство современных USB-клавиатур определяются сами и работают без драйвера.
Что приходит на страницу
- Нота включена и выключена. Номер ноты от 0 до 127 и сила нажатия от 1 до 127. «Нота включена» с силой 0 многие клавиатуры используют вместо «выключена».
- Педаль сустейна. Это контроллер № 64: значение от 64 и выше значит «нажата», ниже — «отпущена».
- Колесо высоты тона. Число от 0 до 16383, спокойное положение — 8192.
- Прочие контроллеры: модуляция, громкость, ручки и фейдеры, если они у клавиатуры есть.
Номер 60 — это «до» первой октавы, или центральное «до». А вот как его называют, договорённости нет: в одних программах это C3, в других C4, в третьих C5. Если нота на странице звучит на октаву не там, где вы ждёте, дело в этой путанице, а не в клавиатуре. Проверьте, как называет её ваша программа.
Где это работает
По данным caniuse, Web MIDI поддерживают Chrome с 43-й версии, Edge с 79-й, Opera с 30-й и Firefox с 108-й. Яндекс Браузер и другие браузеры на движке Chromium работают так же, как Chrome. В Safari встроенной поддержки нет, на iPhone MIDI в браузере тоже не получить. На Android всё зависит от версии и сборки, надёжнее проверять на компьютере.
Если браузер не видит клавиатуру
- Проверьте кабель. Бывают кабели, которые только заряжают и данных не передают.
- Закройте программы, которые могли занять порт: FL Studio, Ableton, другие секвенсоры. Старые драйверы Windows отдают MIDI-порт одной программе за раз.
- Подключите клавиатуру до открытия страницы или перезагрузите вкладку.
- Посмотрите значок рядом с адресом. Если доступ к MIDI запрещён, сбросьте разрешение и нажмите кнопку подключения снова.
- Bluetooth-клавиатуры подключаются через операционную систему, а не через браузер. Сначала соедините её с компьютером, потом открывайте страницу.
Зачем это нужно, если есть секвенсор
Проверка. Новая клавиатура, чужая клавиатура, клавиатура после ремонта: пять минут на странице покажут, все ли клавиши отвечают, одинаково ли они чувствуют силу, работает ли педаль, не дребезжит ли колесо. Секвенсор для этого слишком тяжёлый.
Второй случай: набросок. Сыграли мысль, записали .mid, перенесли файл в FL Studio и подставили настоящий инструмент.
Частые вопросы
Нужны ли драйверы для MIDI-клавиатуры? +
Обычно нет. Большинство современных USB-клавиатур определяются как стандартные USB-MIDI-устройства и работают без драйвера. Драйверы нужны редким моделям с особыми функциями.
Работает ли Web MIDI в Firefox и Safari? +
В Firefox работает с версии 108. В Safari встроенной поддержки нет, на iPhone MIDI в браузере тоже недоступен.
Можно ли подключить клавиатуру по Bluetooth? +
Если клавиатура подключена к компьютеру через систему как Bluetooth MIDI-устройство, браузер увидит её так же, как USB. Подключать нужно через операционную систему, а не через страницу.
Видит ли браузер педаль и колесо высоты тона? +
Да. Педаль приходит как контроллер № 64, колесо как значение высоты тона. Страница должна их обрабатывать: в приборе «Пианино онлайн» педаль и колесо работают.
Безопасно ли давать странице доступ к MIDI? +
Страница получает сообщения от клавиатуры, пока открыта вкладка: ноты и контроллеры. Доступ к файлам и другим устройствам это не даёт. Разрешение можно в любой момент сбросить в настройках сайта.
Клавиатура знает 128 нот. Браузеру достаточно трёх байт, чтобы услышать одну.