News / Live Journal / Information / Soft / Music / Forum / Links / About project




Powered by Google
Информация

 Железо
 Сжатие звука
 Трекеры
 Мьюзиком
 Renoise
 Энциклопедия стилей
 Мастер-класс
 Словарик
 Мысли

Добавить в избранное

Сжатие звука

MO3 — максимальное сжатие модулей

История модульной компрессии

Первая версия звуковой системы для программистов BASS от Ian Luck с поддержкой MO3 (MP3-кодер модулей) появилась совсем недавно — 3-го октября 1999. В начале февраля 2000 года на сайте t.r.a.c.k.e.r.s был выложен для свободного доступа музыкальный диск от The Sands, в формате MO3, — "Packed Band". С этого времени изредка стали попадаться и отдельные работы российских музыкантов, выложенные в этом формате.

Возникает следующий вопрос, а что же было до 3-го октября 1999 года? Каким образом раньше можно было существенно уменьшить размер любого модуля, балансируя на гране между "весом" файла и качеством звучания?

В первую очередь этого пытались добиться путем архивирования модулей. Появились плееры модулей читающие наиболее распространенные форматы архивов. Некоторые трекеры тоже могут работать с модулями в архивах, например Modplug Tracker (только чтение). Сейчас максимальный результат сжатия модуля Вы можете получить от архиваторов RAR и ACE последних версий, при включении опций максимальной компрессии. Также было создано несколько более компактных модульных форматов. В 1992 году появился формат AMF (Asylum/DSMI) от Otto Chrons. Использование его последних версий приводило к уменьшению размера модуля после конвертирования максимум на 15%-20%. В 1993 году Carlos Hasan разработал очень неплохую звуковую систему для программистов D.S.I.K. — Digital Sound Interface Kit. Использование его собственного формата DSM давало уменьшение файла до 10% процентов. Но плееры модулей AMF и DSM не знали формата XM (и конверторы в эти форматы тоже).

То, что не сделали Otto Chrons и Carlos Hasan, позднее реализовал Jean-Paul Mikkers (в миру MikMak). Его звуковая система, начатая как "MIKMOD vx.xx or how to make a modplayer using the GUS SDK Toolkit", стала популярной. Если форматы (а, соответственно, и звуковые системы для программистов) DSM и AMF остались уделом небольшого количества игр для DOS, то MIKMOD добился гораздо большего. Свободно распространяемая (shareware) многоплатформенная звуковая система может работать с несколькими распространенными звуковыми картами и поддерживает несколько наиболее известных форматов, включая XM. Последняя, встреченная мной, версия 2.10 авторского консольного плеера, под DirectSound, не поддерживает формат IT. Кроме этого MIKMOD может воспроизводить модули переконвертированные в его собственный формат — UNI. Размер модуля в UNI может быть меньше оригинала на 40%. К сожалению, вернуть модуль из UNI в первоначальный формат Вам не удастся, нет необходимых утилит.

Одним из неплохих решений по уменьшению размеров файлов модулей была компрессия сэмплов. Оригинальная реализация "компрессии" сэмплов существовала в нескольких программах конца 1980-х — начала 1990-х; заключалась в сохранении только самих нотных листов-паттерн и сопутствующей им технической/авторской информации. Вместо сэмплов в "сжатом" файле сохранялись полные к ним пути на диске. Примером такой программы является трекер MED, программист Teijo Kinnunen.

В разное время в разных трекерах и плеерах была реализована компрессия сэмплов. Самые известные из этих программ:

  • Delusion/XTracker Digital, DMF модуль и DSF сэмпл (8/16 бит, пакованные моносэмплы)
  • Digitrakker, MDL модуль (8/16 битные, моносэмплы, huffman запаковка, неплохой процент сжимаемости)
  • Extreme's Tracker, AMS модуль (8/16 бит, моносэмплы, компрессия)
  • Impulse Tracker, IT модуль (8/16 бит, моносэмплы, MMCMP компрессия, очень качественная, с хорошим процентом сжимаемости)
  • Modplug Player читает все выше перечисленные форматы, кроме AMS модуля
    от Extreme's Tracker, сохраняет модули в MOD/S3M/IT/XM файлы (ADPCM компрессия сэмплов с конвертированием части их из 16 в 8 бит; результат всего этого очень сказывается на качестве звучания не в лучшую сторону)
  • Modplug Tracker, читает все выше перечисленные форматы, кроме AMS модуля
    от Extreme's Tracker, сохраняет в MOD/S3M/IT/XM без дополнительной возможности
    ADPCM компрессии сэмплов (MMCMP компрессия в IT файле не сохраняется)

Из менее известных или забытых плееров и трекеров я назову только мало уже кому известный Sound Wave Pro. Формат модуля — CDM. По своей сути трекер является клоном Scream Tracker 2.01. Программа написана в самом начале 90-х годов ХХ-го столетия. Вряд ли кто встречал ее за пределами России. Да, это наша программа, наш трекер.

Самое же оригинальное решение своего времени — уменьшение размеров модулей при работе в DOS предложил Emmanuel Giasson (в миру Zirconia). Последняя встреченная мной версия пакета консольных утилит MUSIC MODULE COMPRESSOR (MMCMP) 1.32 от 1996 года. Этот алгоритм компрессии был создан автором в 1993-94 году и после двух различных реализаций воплотился в то, что Вы можете найти теперь (последняя версия MMCMP) на ftp://ftp.cdrom.com/pub/demos/incoming/music/programs. Именно эта же технология использована в Impulse Tracker (версия 2.14, с компрессией). По проценту степени сжатия она близка к ARJ/ZIP архивации и гораздо быстрее.

MMCMP — это утилита, компрессующая файлы модулей с очень хорошим процентом сжатия. Главное отличие метода от подобных то, что компрессия никак не модифицирует оригинальные звуковые данные. После компрессии модуля его запакованная версия замещает собой оригинальную, а в самое начало файла помещается сигнатура формата — "ziRCONia". При использовании декомпрессора MMUNCMP из компрессованного модуля будет получен оригинальный. Третья утилита пакета — MMTSR, резидентный распаковщик. При его использовании загрузка компрессованного MMCMP модуля в любую программу происходит с автоматической распаковкой в первоначальный формат. В любом DOS-трекере это удобно использовать для компрессии библиотеки сэмплов, например. При перезаписе из трекера модуль, сжатый MMCMP, не будет компрессирован заново. Если Вы по "религиозным" причинам не используете Impulse Tracker, то ничто не мешает Вам использовать "его" компрессию для сжатия сэмплов и банков сэмплов при использовании только Fast Tracker II, например.

Для работы программы требуется минимум 80386 процессор и Вам необходимо иметь 300Кб свободной базовой памяти для утилит MMCMP/MMUNCMP. Резиденту MMTSR нужно всего 64Кб свободной XMS или EMS (если есть только XMS, то необходимо запускать резидент с параметром XMS: MMTSR xms; более подробно об этой утилите и MMCMP/MMUNCMP Вы прочитаете в авторской документации) и всего 2,5Кб базовой. При работе резидента также необходимо свободное место на диске C: — чуть больше размера загружаемого модуля без MMCMP компрессии. MMCMP поддерживает только 8/16-ти битную монокомпрессию. Компрессор может обрабатывать следующие форматы трекерных модулей, сэмплов и инструментов:

  • S3M — Scream Tracker 3 модуль, версии 3.21; не поддерживаются Adlib сэмплы, зато поддерживаются 16-битные сэмплы, не используемые Scream Tracker 3
  • IT — Impulse Tracker модуль, версии 2.02
  • XM — Extended Module (Fast Tracker 2.06)
  • MOD — Amiga MOD формат (не поддерживаются 15-ти сэмпловые MOD)
  • DigiPlayer/Scream Tracker 3 сэмпл файл
  • Impulse Tracker сэмплы
  • WAV — низкий процент компрессии
  • XI: Fast Tracker 2 Extended инструмент
     Без загруженного резидента компрессованные модули корректно могут корректно читать только программы из серии продуктов Modplug и трекер IT II. Учтите, что IT II может не читать ziRCONia-модули (модули с MMCMP компрессией) в следующих случаях.
  • если не загружен диспетчер памяти EMM386 или аналогичный ему
    (для декомпрессии требуется EMS)
  • если Impulse Tracker запущен из Windows 3.xx

В этом случае нужно распаковывать файлы модулей вручную, используя MMUNCMP. Под Windows 9x резидент MMTSR может работать в окне DOS-программы.

Ну а в начале февраля 1999 года появилась первая публичная версия звуковой системы, на базе которой и был реализован формат модульной MP3-компрессии MO3.

Игорь Чистик
Москва, 29 января 2001 года

MO3 encoder. Ogg/mp3-сжатие семплов модулей

Все мы рано или поздно сталкиваемся с тем, что размер финальной версии модуля гораздо больше желаемого. Особенно это чувствуется если никак нельзя пожертвовать качеством сэмплов, а встроенная компрессия вашего трэкера не исправляет эту ситуацию. Когда я первый раз столкнулся с такой проблемой, мне нужно было выложить в сеть размером чуть больше 3 МБ. Без авторской Jeffrey Lim IT-компрессии его размер был равен 4 МБ. Весь набор сэмплов 16-битный, с дискретизацией на 22050 Гц.

Архивирование модуля привело к очень странному результату – полученный архив был меньше модуля всего на несколько килобайт. Попытка записать этот модуль в MP3 на 128кбит/с стерео 44100 Гц тоже не привела ни к чему хорошему – 3,5 МБ. Самое забавное — когда я проиграл полученный таким образом MP3 на звуковой карточке SB Live! плеером входящим в ее поставку, то в некоторых местах отчетливо звучала 'чечетка' (при компрессии в MP3 все уровни громкости, равные 0 dB (т.е. "зашкаливание"), могут принимать характерные призвуки, поэтому, когда идет вывод в MP3, нужно нормализовать звук на 95%.).

Ради интереса записал модуль в WMA на 96кбит/с. Результат записи меня немного утешил – 2,5 МБ с качеством звучания даже немного лучше, чем в MP3. Но меня этот вариант тоже не устраивал — размер файла должен был быть максимум около 1 МБ.

Про компрессию сэмплов в ModPlug-е я вообще молчу – хуже качества не слышал. Размер полученного файла был равен 800 Кб (максимальное сжатии) при низком качеством звучания, которое может вызвать рак ушей. Выход мне подсказал Scorpy, бывший в то время редактором t.r.a.c.k.e.r.s Компрессия сэмплов с использованием MP3 – модули MO3 создаваемые для движка BASS.

По адресу разработчиков программы http://www.icl.ndirect.co.uk/music/index.html я нашел полный набор программ для работы с этим форматом:

  • компактный и качественный плеер XMPlay на движке BASS;
  • Win32 консольная утилита для конвертирования модулей MO3 в предыдущий формат;
  • программа MO3 encoder.

Для компрессии модулей программа использует внешний OGG/MP3 компрессор. Вы можете использовать любой OGG/MP3 encoder, работающий из командной строки. В настройках программы для компрессора можно выбрать один из готовых шаблонов настроек кодера или создать свой. Из компрессоров я предпочел бесплатный LAME MP3 encoder, но большего результата можно добиться используя кодер OGG. Я нашел его по этой ссылке. А дальше все зависит от вас и ваших ушей.

Выполнив 'Calibrate’ загруженного модуля, получаем предварительные настройки для каждого сэмпла. Если вас устраивает получившийся вариант – то можно делать MO3. А меня интересует компрессия по максимуму, без слышимой потери качества звучания. Уведя ползунок компрессии вправо до конца, вооружившись наушниками и терпением, поднимаю кбит/с каждого сэмпла (сравнивая полученное с оригиналом). Также можно посмотреть графическое отображение сжатия каждого семпла.

Уменьшать предложенную программой частоту дискретизации сэмпла не рекомендую. Какие-то сэмплы будут нормально звучать (сравнимы с оригиналом) и на 16 кбит/с, а некоторые придется оставить и вовсе без компрессии. Последнее особенно относиться для loop-ов (на точках зацикливания могут быть слышны щелчки; это зависит от кодера). В среднем, в итоге, сэмпл получается на 48-56 кбит/с. А некоторым и 96 кбит/с мало.

Преобразовав наконец модуль в MO3 вы увидите, что размер файла, практически без потери качества звучания, гораздо меньше оригинала. Чем больше качество исходного файла, тем лучше он сжимается (до 10-12 раз!). Окончательный вариант моего модуля из IT на 3 МБ превратился в MO3 на 670 КБ почти с тем же качеством звучания. Архивируете полученное (оптимально - в формат RAR), и добавляете описания по вкусу. Ииспользуя сжатие mo3-ogg и WinRar3 я получил, в дальнейшем, из 2600кб-ного модуля IT архив RAR весом всего 91кб. НО, все семплы модуля были высокого качества - 16бит 44кГц. Можно еще положить в архив еще и конвертер из формата MO3, но лучше просто дать на него ссылку; не у всех есть плеер XMPlay. Распаковка модуля из MO3 происходит быстро и без изменения качества звучания.

Игорь Чистик
Москва, 17.07.00

MO3. Практика MO3 encoder.

Ну сколько можно говорить на эту тему? Господа трекерщики, чем меньше по объему ваш модуль, выкладываемый в интернет, тем он доступнее для прослушивания, тем больше слушателей смогут скачать вашу музыку. Мне уже просто надоело тратить деньги на интернет, скачивая 2-3 мб модули, чтобы потом просто их удалить, так как никакой художественной ценности они не представляют.

К счастью MPEG технологии дошли, наконец, и до модульной музыки. Появился новый формат файлов — mo3, котроый дает возможность на порядок (в 10 раз) уменьшить размер вашего модуля. Компрессор конвертирует практически все известные форматы, правда распаковщик пока не распаковывает формат IT, но в будущем думаю, эта проблема будет устранена.

Я был не прав в статье «Подготовка модулей для интернета», говоря, что мой метод уменьшения размера модуля лучше, чем компрессия mo3, здесь надо оговориться — это действительно так, если сжимать модуль с установками «по умолчанию». Если процесс оптимизировать, то есть для каждого сэмпла подбирать параметры компрессии, то можно уменьшить модуль до 10% от оригинала.

Здесь я хочу просто поделиться накопленным опытом использования mo3 — кодера. Я использую MP3 кодер LAME, который признан лучшим в тестах на IXBT. Я и сам это понял, но только когда не смог закодировать свой трек Axel Foley — Recall без глюков используя битрейт 128 kbps, и с которым LAME успешно справился. Для начала скачайте кодер в mo3 (487kb), в который я положил также и LAME-encoder и плейер для проигрывания XMPlay.

MO3 encoder v0.8

Итак запускаем. Перед нами окошко mo3 кодера. В верхней части выбираем из выпадающего списка LAME или LAME VBR — кому как нравится. Нажимаем Calibrate, для проверки и отстройки mp3 кодера. Затем нажимаем самую большую кнопку в окошке и загружаем модуль. Снизу появится список сэмплов и сколько раз они используются в модуле. Справа для каждого сэмпла есть 4 кнопки: Sample Rate, Kbps~ratio, PCM и mp3.

Sample Rate при нажатии меняет значение на:

  • 16000-32000 — частота дискретизации — выставляется автоматически (значение берется из модуля)
  • loseless — не кодировать сэмпл (оставить как есть)
  • remove — удалить (автоматически выставляется для неиспользуемых сэмплов)

Кнопкой Kbps~ratio устанавливается качество кодирования, там же показывается размер сэмпла в процентах от оригинала. Чем выше kbps, тем выше качество кодирования сэмпла, но и размер больше. Для некоторых очень коротких сэмплов (например используемых в чип-тюнах) размер кодированного сэмпла может в 2 раза превышать размер некодированного. В этом случае лучше его не кодировать.

Кнопки PCM и mp3 служат для сравнения оригинального звучания сэмпла (PCM) и кодированного (mp3). При проигрывании зацикленных сэмплов, цикл проигрывается 2 или 3 раза.

Выставляете параметры для каждого сэмпла, чтобы звучание не отличалось от оригинала но в то же время чтобы сэмпл имел минимальный размер и нажимаете GO!. Всё, модуль готов. Можете сравнить размер оригинального и сжатого модуля. При желании — его можно прослушать нажав кнопочку Play MO3. Можно также удалить названия сэмплов, инструментов и комментарии для уменьшения размера модуля, поставив галочки в секции Remove texts.

Несколько рекомендаций:

  • При кодировании следует учитывать, что высокочастотные составляющие звука при уменьшении kbps ослабляются. Не следует использовать для сэмплов тарелок, снэров значение sample rate менее 32000 и kbps менее 40.
  • Если зацикленный сэмпл щелкает, то можно попытаться увеличить kbps, пусть даже в ущерб размеру. Если это не помогает — попробовать увеличить sample rate. Если и это не поможет — не кодируйте сэмпл (loseless)
  • Странный, но интерестный эффект возникает при кодировании 8-битных сэмплов: если уменьшить sample ratio до 16000 и уменьшить kbps в мягких звуках (pad) пропадает столь свойственный 8-ми битным сэмплам шум.
  • При некоторых значениях kbps частота сэмпла меняется — это значение использовать нельзя.

Надеюсь моя маленькая статья сделает вашу музыку более доступной для широких масс слушателей.

Успехов!
© 2000 Gene J.B.

Ogg Vorbis и MO3

OGG — это новый бесплатный формат (расширение файлов — .ogg) сжатия аудио с потерями, поддерживаемый всеми основными программными плеерами цифровой музыки (WinAmp, Sonique и др), и популярными звуковыми редакторами. При компрессии часть данных удаляется, но в отличие от mp3, разработчики реализовали более совершенную акустической модель. Музыка сжатая в формате Ogg Vorbis, звучит лучше, Mp3 того же размера, и при низких битрейтах качество звучания остается приемлимым для прослушивания.

Для оценки уровня качества OGG разработчики ввели 10-ти балльную шкалу — "шкалу качества". Нулевой уровень ее — это 64 kbps, 5-ый — 160 kbps, 10-ый — 400 kbps, а 3-ий — это примерно CD-качество. Получаемые файлы 3-го качества имеют усредненный битрейт в 100kbps, и качество выше, чем mp3 128kbps. При этом размер файла OGG может быть ощутимо меньше чем MP3.

В данный момент кодеры позволяют сжимать информацию от 64 до 500 kbps для стерео файлов и от 32 до 256 kbps для моно при частоте семплирования 44,1 кГц. При проигрывании сжатого файла можно выбрать битрейт, при этом дополнительное перекодирование не требуется. Ogg-файлы имеют хорошую информативность комментариев в заголовке и могут содержать число каналов больше двух.

В данный момент формат уже поддерживается Mo3 encoder-ом Яна Люка. Наилучшего сжатия модуля можно добится если использованы только 16-битные семплы с высокой частотой семплирования: чем выше качество оригинала, тем большему сжатию он подвержен при наименьшей потере качества. Самое интересное то, что полученный MO3-OGG модуль еще хорошо поддается архивированию, так что итоговый результат для выкладывания в интернет будет обладать качеством получше, чем MO3-MP3 и весить поменьше, что актуально пока для многих.

Необходимое программное обеспечение (OGG-кодек и плеер) можно найти на сайте проекта www.vorbis.com, плагин для проигрывания .ogg-файлов входит в состав доступен на WinAmp, а Mo3 Encoder и другие программы для работы с форматом MO3, как всегда, у Яна Люка — www.un4seen.com. Для оптимального результата архивирования модулей mo3-ogg лучше всего использовать WinRar3 с настойками максимального сжатия.

Игорь Чистик
Москва, 12.06.2002

Вернуться в раздел

Dreams...
Отправить письмо дизайнеру
к началу страницы
copyright © 1997-2017 t.r.a.c.k.e.r.s
All Rights Reserved