Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

MP3: Header, Huffman, MDCT etc...

15K
19 апреля 2010 года
Vertecs
116 / / 21.06.2008
С прошедшим ПАСХАЛЬНЫМ ПРАЗДНИКОМ! Православные! ;)

Нужно разобраться с MP3-фреймами. Каким образом представлены данные фреймов и как MP3-поток можно кодировать на лету?

Короче, на данный период программирую достаточно серъёзные утилиты в их он-лайн виде (только JS). Написал пару музыкальных трекеров, генерирующих midi-поток на лету и воспроизводящияся прямо в окне браузера. Не ново.
Так-как JS не требует компиляции, можно быстро проверять/исправлять. В дальнейщем скрипты же с минимальными затратами портируются в Си! Поэтому не надо меня осуждать, что задачу я решаю в JS на HTML-DOM. OK?

Опыт набрал. В любом DOS-редакторе HEX-Dump'ов голыми руками с нуля могу состряпать нужный файл. Если раньше WAV-файлы так набивал (они же простые со своими RIFF, WAVEftm и т.д.), то сейчас и MIDI набиваю в дампе (не только ноты, но и скольжения высоты и громкости, даже aperggio-эффекты(бульканье: знатоки трекерной музыки и чип-тюнз меня поймут) и всё, что ни в каком нормальном редакторе миди не достижимо). Причём получаемые файлы проигрываются даже на сотовых телефонах (и булькают с aperrgio!), но в редакторах всё теряется... :(

Так вот. Написал пару утилит-трекеров в HTML под Mozilla-FireFox / Opera. IE-версия умеет средствами ActiveX сохранять партитуру (или Morse-сигналов поток) на диск. А вот Chrome подвёл... :(
Его new Audio() (W3C-HTML 5) понимает лишь MP3 и всё!
На других форумах предлагают тупо генерировать WAV, разбирать в MDCT, сжимать Huffman-алгоритмом, собирать в MP3. И всё это, в моём случае, прямо в JS на странице HTML!!!

Суть задачи:
В UTF-8 символ ПРОБЕЛа можно закодировать как 0x20, как 0xC0+0xA0, как 0xE0+0x80+0xA0, и как 0xF0+0x80+0x80+0xA0... Понятно, что первый вариант - верный, остальные - избыточны, но тоже допускаются. Ради упрощения алгоритма можно тупо кодировать всё в 4 байта!
Значит Huffman-сжатие можно тоже обойти, пренебречь этим и кодировать пару символов целыми байтами. Это РАЗ!
MDCT - сетка разбора частотных характеристик потока. Но у меня же сигнал не обычный, а просто синусоидальный гудок короткий. Один единственный! Значит и алгоритм-MDCT тоже можно обойти!

НЕ ГУГЛИТСЯ именно представление распакованного потока MP3. А именно, как представляется в MP3 таблица с указанием "сейчас включить программный синтезатор частоты на частоту 440Гц с амплитудой -1дБ". По сути MP3-фрейм - широкополосный эквалайзер и мне надо лишь одну ручку поднять вверх...

Изучал Hex-Dump'ы, но это мартышкин труд. Так-как тупой мой wav с писком в 440Гц сжимается в mp3, но из-за погрешностей заносятся и сторонние гармонники. Пусть даже их и не слушно...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог