Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Работа со звуком > MIDI: on-fly генерация


Автор: Paguo86PK 8.4.2010, 03:10
ХРИСТОС ВОСКРЕС!

Доброй ночи!

В общем, давно, как-то раз попросили написать скрипт для перевода текста в звуковую последовательность Морзе для web-страницы. Используя блокнот, базовые знания PHP и заголовка wav-файлов, написал за час скрипт, возвращающий несжатый звуковой поток. Но, как оказалось, даже на localhost более-менее осмысленный текст транслируется в поток и перекачивается клиенту ощутимо не скоро, да и грузит серверную часть. Это естественно.

Решил, в общем, на досуге состряпать такое же, но на клиентской стороне, используя JavaScript. Но не рискнул наступать на те же грабли и решил просто использовать средства midi. Однако, под весь набор символов создавать кучу midi файлов не эстетично и не гибко...

Стал читать спецификацию формата. Однако так и не понял. Вот скажем в любой момент и голыми руками в любом Hex-редакторе я могу набить wav-файл, со всякими RIFF WAVEfmt и т.д., так-как знаю наизусть назначение каждого байта. И я так поступал часто, когда требовалось быстро состряпать сэмпл для mod-трека.
А вот с миди всё ново и не знакомо. Я вообще никогда не разбирал ничего, относительно midi...

Обратился в Google с поиском нечто сходного, как состряпать midi'шку из пары нот на лету. Но ничего не нашёл...

Буду рад и исходникам хоть на Pascal'е. Нужно лишь раскрыть принцип, как сделать файл с одной короткой нотой, файл с двумя короткими нотами, файл с длинной нотой выше по тону и т.д...
Базовые принципы.

Спасибо!

P.S.: В общем, решил. С помощью ModPlug Tracker сгенерировал 3 файла (нота до, нота ре, нота до и ре), изучил их Hex-Dump и понял суть.

Автор: Paguo86PK 25.4.2010, 10:25
Спустя всё это время удалось разобраться с миди-файлами, устройством миди-потока и командами.
Если кому-то окажется полезным, ниже выкладываю скрипт (HTML-JS), генерирующий сигналы азбуки Морзе по тексту в набор миди-команд.
Работает в Mozilla-FireFox, Opera и IE (используются ActiveX-object средства файловой системы и готовое сохраняется в C:\morseTxt.mid).

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)