Главная » Программирование звука » Формат файла MOD

0

MIDI хорошо подходит для хранения музыки, однако у него есть несколько недостатков.  Самый  очевидный  связан  с  тем,  что  этот  формат  первоначально  разрабатывался  для  согласования  различного  музыкального  оборудования.  Синтезаторы обычно  позволяют  использовать  фиксированный  набор  инструментов,  и  для  каждого  синтезатора  он  уникален.  Даже  инструменты  с  одинаковым  названием  зачастую  звучат  по-разному,  так  что  многие  файлы  MIDI  могут  правильно  воспроизводиться только на некоторых синтезаторах.

Один из способов решения данной проблемы использование семплов. B таком случае  музыкальный  файл  содержит  двоичные  записи  нот,  характерных  для  каждого  инструмента.  Синтезатор  использует  эту  запись  как  шаблон,  осуществляя сдвиг по высоте для формирования других нот. Данный подход используется файловым  форматом  MOD.  Эти  файлы,  также  называемые  модулями  проигрывателя (player  modules)  или  трекерными  модулями  (tracker  modules),  содержат  набор  записанных  звуков  и  нотную  информацию.  Поскольку  в  тело  каждого  файла  помещена  запись  звучания  инструментов,  файлы  MOD  становятся  независимыми  от возможностей  синтезатора  или  звуковой  карты,  поэтому  должны  звучать  одинаково на всех системах.

Другое отличие форматов MOD и MIDI состоит в том, что файлы MIDI являются  событийно-ориентированными:  в  них  хранится  последовательность  событий и  определяются  моменты  их  возникновения.  Проигрыватель  MIDI  считывает  из файла  очередное  событие  и  ждет,  пока  не  наступит  время  его  возникновения. Файл  MIDI  может  устанавливать  любое  количество  начальных  моментов  звучания ноты, не определяя соответствующих конечных моментов. B таких файлах нет встроенного ограничения на количество параллельно звучащих нот.

Файлы  MOD, наоборот, разбиты на  такты  (они отличаются  от  используемых в  музыкальной  нотации;  иногда,  чтобы  подчеркнуть  разницу,  предпочитают  использовать  термин  деление).  Каждый  такт  соответствует  некоторому  интервалу времени и полностью описывает события, происходящие в течение данного интервала. Как следствие, файлы MOD, в отличие от MIDI, могут воспроизводить ограниченное количество параллельных нот. Для музыканта это недостаток, но программист способен использовать ограничения, чтобы сделать механизм воспроизведения более надежным.

Даже  4-канальное  ограничение  для  исходного  формата  MOD  не  такое  строгое,  как  может  показаться.  Например,  если  в  композиции  очень  часто  используются  фортепьянные  аккорды,  разумно  сохранить  партию  как  один  инструмент и воспроизводить его, будто это одна нота. B качестве аналогии приведу такой

инструмент General MIDI, как струнная секция. Более поздние варианты MOD

допускают использование 6, 8, 16 или даже 32 каналов.

Поскольку   MOD   разрабатывался   как   специализированный   формат,   используемый  одной  программой,  разные  программисты  создавали  новые  варианты  со множеством  незначительных  отличий.  Простого  метода  распознавания  таких  вариантов не существует, отчего возникает путаница это самый крупный недостатокфайлов  MOD.  Мы  с  вами  поговорим  о  распространенном  формате  ProTracker, различия между вариантами будут отмечены особо.

Идентификация файлов MOD

Формат  ProTracker   популярная  версия  MOD   содержит  4-байтную  сигнатуру,  однако  размещает  ее  не  в  начале  файла.  Другие  варианты  MOD  не  только используют иные сигнатуры, но и размещают их в разных местах файла.

Базовый   31-голосный   формат   ProTracker   можно   определить   по   сигнатуре

M.K., или M!K!, которая следует задлинной заголовочной информацией.

Листинг 23.1. Идентификация файла MOD

bool IsModFile(istream &file) { file.seekg(20+30*31+1+1+128); char marker[4]; file.read(marker,4);

if (memcmp(marker,"M.K.",4)==0) return true; if (memcmp(marker,"M!K!",4)==0) return true; return false;

}

Источник: Кинтцель Т.  Руководство программиста по работе со звуком = A Programmer’s Guide to Sound: Пер. с англ. М.: ДМК Пресс, 2000. 432 с, ил. (Серия «Для программистов»).

По теме:

  • Комментарии