создание MIDI в javascript

Я хотел бы создать последовательность заметок MIDI в javascript, а затем воспроизвести ее. Многие плагины поддерживают MIDI, но я не знаю ни одного поддерживающего URL-адрес «data:». Генерация MIDI-контента не представляет большого труда, но подача этого контента в проигрыватель — дело непростое. Кто-нибудь знает, как это можно сделать - если не вообще, то хотя бы для конкретного плагина типа QuickTime?


person Alexander Kaushansky    schedule 03.05.2010    source источник
comment
WebMIDI помогает? developer.mozilla.org/en-US/docs/Web/API/ MIDI-доступ   -  person Martynas Jusevičius    schedule 11.09.2019


Ответы (5)


Очень аккуратная проблема. В последнее время я много работал с изображениями в кодировке base64 и регулярно использую http://www.greywyvern.com/code/php/binary2base64 для кодирования изображений. Я только что попытался преобразовать MIDI-файл и поместить текстовый поток base64 в HTML, и он отлично воспроизводился в Firefox (что меня удивило). Вот код (для краткости поток Base64 удален):

<embed 
    autostart="true" 
    loop="false" 
    volume="100" 
    hidden="false" 
    src="data:audio/x-midi;base64,abc...."
></embed>

Я не уверен, что можно перейти от двоичного образа к base64 в JS, но я подозреваю, что переход от MIDI может быть. Это начало.

person Andrew    schedule 12.05.2010

Возможно, вы захотите взглянуть на следующий мой блог. Речь идет о библиотеке, которая делает именно то, что вы пытаетесь сделать, на стороне клиента. Однако имейте в виду, что кросс-браузерная воспроизводимость MIDI в браузерах не совсем стабильна.

http://sergimansilla.com/blog/динамически-генерирующий-миди-в-javascript/

person Sergi Mansilla    schedule 09.11.2010
comment
Сергей, ваше решение, похоже, не решает основную проблему. Если вы используете вставку или объект, у вас нет контроля над воспроизведением. Интерфейс QuickTime решает проблему. У вас есть полный контроль над ним из javascript, вы можете даже динамически генерировать и добавлять материал. И это работает с URL-адресом данных. В этом был весь смысл исходного вопроса. - person shurik; 29.01.2011

Похоже, самым простым способом будет передача MIDI-данных, например. PHP-скрипт, который затем возвращает ввод. Затем вы можете использовать «yourscript.php?your-midi-data» вместо «data:your-mini-data».

person ThiefMaster    schedule 04.05.2010

В дополнение к использованию Javascript (см. сообщение Серджи), вы можете использовать Java в качестве резервного метода с моим мостом между Javascript и Java, который раскрывает части среды MIDI: http://mudcube7.blogspot.com/2010/08/dynamic-midi-generation-in-browser.html

person Michael Deal    schedule 10.11.2010

QuickTime с URL-адресом данных работает как с Firefox, так и с Chrome (последние выпуски, без бета-версий). Вы должны следовать инструкциям из веб-сайт quicktime: инициализируйте QuickTime, вызвав QT_WriteOBJECTfunction mp3, просто чтобы он не жаловался - возможно, в этом нет необходимости), зарегистрируйте слушателей, как описано в указанной ссылке, и после получения обратного вызова qt_load вызовите метод document.movie1.SetURL(myDataURL). Я использовал кодировку base64 в URL-адресе данных: "data:audio/midi;base64,...". (контент был сгенерирован javascript). Все работало сенсационно хорошо: Play(), Stop() и т. д. Самое сложное — это прочитать их монументальный документ (обратите внимание, что в нем также есть часть «HTML»)

person shurik    schedule 27.01.2011
comment
ссылка не годится... - person milesaron; 23.12.2016