Отправка MIDI-сообщений на веб-странице
-
06-09-2019 - |
Вопрос
Как я могу воспроизвести отдельные MIDI-ноты на веб-странице?
Я знаю два способа сделать это:
Напишите элемент управления ActiveX.Тогда это работает только в Windows.Я когда-то писал элементы управления ActiveX, но теперь никто не любит их устанавливать.
Напишите Java-апплет.Это нормально, если у пользователя уже установлена Java, но многие пользователи отключают апплеты.Я сделал это именно так, и вы можете увидеть результат на newfweiler.com — если это сработает на вашей конкретной установке.Вам понадобится как минимум Java 5, хотя, полагаю, я мог бы переписать его на Java 1.2, если бы пришлось.«Секвенсор реального времени» и «Синтезатор звука Java» у меня не работают;Я думаю, вам нужно установить волновые таблицы или что-то еще, чтобы они работали.
У большинства пользователей установлен Flash, но я просмотрел документацию Flash и Flex и не нашел ничего эквивалентного javax.sound.midi.
Существует несколько способов воспроизведения MIDI-файла на веб-странице, и вы можете найти «Javascript Pianos», которые воспроизводят MIDI-файл, состоящий из одной ноты, при каждом нажатии клавиши.Вы не можете играть несколько нот одновременно или удерживать клавишу нажатой для получения длинной ноты.
То, что я пытаюсь сделать, является эквивалентом javax.sound.midi.Receiver.send(midiMsg, -1), используя только то, что большинство людей обычно устанавливают на машине.
Решение
Используйте API веб-аудио для воспроизведения звуков и файлов .mid.См. пример MIDI-плеера на https://surikov.github.io/webaudiofont/examples/midiplayer.html
Используйте Web MIDI API (Chrome поддерживает его) для прослушивания MIDI-клавиатуры.См. пример на https://surikov.github.io/webaudiofont/examples/midikey.html
Другие советы
Java, вероятно, по-прежнему будет вашим лучшим выбором, даже если немногие пользователи отключат ее.
Я использую NoScript и могу внести сайт в белый список.Я бы сказал, что большинство пользователей, вероятно, сделают то же самое, если вы предоставите интересный контент.
Нашел следующее (перевод с итальянского).Я бы сказал, что Flash — это лучший вариант.Если вы хотите оказаться в гетто, вы можете просто взять около 88 фортепианных сэмплов и сыграть их в соответствии с временной шкалой.