| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Работа со звуком > 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). |