Отправка MIDI-сообщений на веб-странице

Как воспроизвести отдельные MIDI-ноты на веб-странице?

Я знаю два способа сделать это:

  1. Напишите элемент управления ActiveX. Тогда это работает только в Windows. Когда-то давно я писал элементы управления ActiveX, но теперь никто не любит их устанавливать.

  2. Напишите 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), используя только то, что большинство людей обычно устанавливало на машину.


person Mark Lutton    schedule 30.05.2009    source источник


Ответы (4)


Используйте Web Audio API для воспроизведения звуков и .mid-файлов. См. пример MIDI-плеера по адресу https://surikov.github.io/webaudiofont/examples/midiplayer.html

Используйте Web MIDI API (Chrome поддерживает его) для прослушивания MIDI-клавиатуры. См. пример на странице https://surikov.github.io/webaudiofont/examples/midikey.html

person user1024    schedule 28.09.2018
comment
Ну наконец то! Через 9 лет. - person Mark Lutton; 01.10.2018

Java по-прежнему, вероятно, будет вашим лучшим выбором, даже если несколько пользователей отключат его.

Я использую NoScript и могу добавить сайт в белый список. Я бы сказал, что большинство пользователей, вероятно, сделают то же самое, если вы предоставите убедительный контент.

person John Gietzen    schedule 30.05.2009

Нашел следующее (перевод с итальянского). Я бы сказал, что Flash — это то, что нужно. Если вы хотите быть гетто, вы можете просто взять 88 или около того фортепианных сэмплов и воспроизвести их на временной шкале.

http://translate.google.com/translate?prev=hp&hl=en&js=n&u=http%3A%2F%2Fflash.html.it%2Fguide%2Flezione%2F2936%2Fmidi-player%2F&sl=it&tl=en&history_state0=

person sehugg    schedule 30.05.2009

Пример онлайн-миди-фортепиано можно найти по адресу https://jazz-soft.net/demo/VirtualPiano.html Он использует Web Audio API и не требует специального программного обеспечения, однако, если Web MIDI включен, он имеет больше функциональных возможностей. Код указан на странице.

person Sema -    schedule 16.12.2020
comment
Можете ли вы включить краткий пример того, как страница использует API веб-аудио? Это поможет, если ссылка изменится или станет недоступной в будущем. - person Kyle Pollard♦; 17.12.2020
comment
JZZ.synth.Tiny().noteOn(0, 'C5', 127).wait(500).noteOff(0, 'C5'); см. github.com/jazz-soft/JZZ-synth-Tiny - person Sema -; 17.12.2020