Подтвердить что ты не робот

Создайте живой MIDI из Javascript

Я провел некоторое исследование, и кажется, что в наши дни Javascript и MIDI не идут хорошо вместе. По крайней мере, так говорит Google.

Как указано в этом разделе: генерирование MIDI в javascript, можно создать файл, либо в Javascript, либо на стороне сервера, и воспроизвести его, как будто бы вы играли обычный файл.

Но я действительно хотел бы иметь возможность отправлять отдельные midi-события, "жить", так как это было бы постоянное взаимодействие с пользователем. Я предполагаю, что мой план B должен был создать Java-апплет, который сделает это, но тогда мое приложение больше не будет чистым HTML5.

Я также слышал, что поддержка аудио HTML5 сейчас не известна, поэтому я также подумал, что если теперь не доступно решение, каковы возможные будущие результаты?

Спасибо.

4b9b3361

Ответ 1

См. раздел вставки музыки этот пост в блоге Джона Ресига. (По какой-то причине игра Марио, которую ссылки Resig для воспроизведения звучит для меня в Firefox, но не в Chrome или Safari, стоит исследовать, почему).

Идея заключается в том, что вы используете URI данных, чтобы внедрить версию данных, закодированную в base64, в самом файле HTML. Таким образом, вы можете написать Javascript для непрерывного генерации данных в формате MIDI, затем закодировать его в base64, а затем ввести его в элемент HTML5 <audio>

Ответ 2

Я считаю, что лучшим вариантом на данный момент является общение из вашего приложения HTML через xhr или websockets в бэкэнд-систему, запущенную на вашем сервере, которая может выполнять фактический перевод в midi-события. Вы можете обнаружить, что один из многих уже имеющихся кометных серверов может облегчить эту часть вашей жизни, однако для многих приложений midi требуется относительно низкая латентность, и вы будете бороться за то, чтобы методы комет были намного ниже 100 мс.

Ответ 3

Если html5 является опцией, вы можете попытаться сгенерировать osc-события с помощью web-сокетов и преобразовать их в midi-сигналы с использованием прокси-сервера сервера.

Что я не знаю, если таймеры в javascript достаточно стабильны для создания точных таймингов.