Odyssey paper #08
31 марта 1999

С вершин - Описание формата файлов *.MOD музыкального редактора Amiga ProTracker.

 С вершин
 ________

 Описание формата файлов *.MOD музыкально-
го редактора Amiga ProTracker.
                  
(C) Russian Digital Computing
Переработка и дополнение: Phantom Lord


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

+0 - 20 - Имя мелодии, 20 символов,   если
меньше - кончается нулем 

+20 - 22 - Имя первого инструмента (нуль -
конец)

+42 - 2  - Длина первого инструмента     в
словах (для получения длины в байтах умно-
жайте на два). Все числа в формате процес-
сора Motorola, для преобразования в формат
процессоров DEC, Intel, Zilog и т.п. поме-
няйте местами байты в слове перед  умноже-
нием

+44 - 1 -  Младшие 4 бита, число со знаком
- значение плавной подстройки частоты 

+45 - 1 - Громкость по умолчанию для  пер-
вого инструмента - в диапазоне 0 · 64 

+46 - 2 - Смещение от начала инструмента -
начало области зацикливания (в словах)

+48 - 2 - Длина области  зацикливания    в
словах.

 Дальше идет  информация  об  остальных 30
инструментах, каждая запись  по   30 байт,
всего 31 инструмент.После записей об инст-
рументах  идет  описание мелодии:


+950 - 1 - Длина мелодии в   позициях   из
списка

+951 - 1 - Не используется

+952 - 128 (независимо от +950)  -  Список
позиций, каждый его элемент - номер   pat-
tern'а от 0 до 63.

+1080 - 4 - Признак формата ProTracker   -
буквы "M.K."

+1084 - 1024 - Нотный текст pattern'а 0

     Нотный текст каждого pattern'а  зани-
мает 1 килобайт.  Общее  количество   pat-
tern'ов можно определить, найдя максималь-
ный номер в  списке  позиций  и вычитая из
него единицу, т.к. pattern'ы нумеруются  с
нуля.
 Каждая нота занимает четыре байта, в pat-
tern'е идут 64 блока по четыре ноты    для
четырех каналов. Pattern'ы идут непрерывно
друг за  другом,  после окончания  послед-
него pattern'а сразу   начинается   первый
инструмент,  за  ним второй и т.д. Положе-
ние инструментов в файле можно   вычислить
исходя  из  их длин. 

 Формат описания ноты.
 
 Нота состоит из четырех байт (с 1 по 4).


 _____БАЙТ 1_____   БАЙТ2_
/                 /      
0000          0000-00000000

 Старшие        Период Ноты.
четыре бита      (12 бит)
номера ин-
струмента.



 _____БАЙТ 3_____   БАЙТ4_
/                 /      
0000          0000-00000000

Младшие       Код и информационный байт
четыре бита
номера ин-         спецэффекта.
струмента


 Нота задается в виде периода, для  преоб-
разования используйте таблицу:


     Нота                Период


от C-1 до B-1 - 856,808,762,720,678,640,
                604,570,538,508,480,453
от C-2 до B-2 - 428,404,381,360,339,320,
                302,285,269,254,240,226
от C-3 до B-3 - 214,202,190,180,170,160,
                151,143,135,127,120,113



Если период равен нулю, значит  продолжает
играть предыдущая нота.
Если номер инструмента нулевой  -   играть
предыдущим инструментом.
 Коды спецэффектов приведены ниже:

 0 - None/Arpeggio     8 - * NOT USED *
 1 - Portamento Up     9 - SampleOffset
 2 - Portamento Down   A - VolumeSlide
 3 - TonePortamento    B - PositionJump
 4 - Vibrato           C - Set Volume
 5 - ToneP + VolSlide  D - PatternBreak
 6 - Vibra + VolSlide  E - Misc. Cmds
 7 - Tremolo           F - Set Speed


 Команды с кодом Е:

 E0- Filter On/Off     E8- * NOT USED *
 E1- Fineslide Up      E9- Retrig Note
 E2- Fineslide Down    EA- FineVol Up
 E3- Glissando Control EB- FineVol Down
 E4- Vibrato Control   EC- NoteCut
 E5- Set Finetune      ED- NoteDelay
 E6- Patternloop       EE- PatternDelay
 E7- Tremolo Control   EF- Invert Loop


 Описание спецкоманд.

 0 - Arpeggio. Если инф. байт - нуль, зна-
чит  ничего  не  делать  (т.е. просто  иг-
рается нота. Если не нуль, то   инструмент
играется так: быстро  перемежаются  нотные
промежутки, сначала  играется  нота, потом
нота + младшая шестнадцатиричная цифра инф
байта в полутонах, потом опять нота, потом
нота + старшая цифра инф. байта.
 1 - Portamento Up. Плавно повышает тон со
скоростью из информ. байта.
 2 - Portamento Down. -//- понижает -//-.
 3 - Tone Portamento. С заданной скоростью
доводит тон до тона текущей ноты, т.е. те-
кущая нота начинается не сразу.
 4 - Vibrato. Колебания тона с частотой из
старшей цифры инф. байта и амплитудой   из
младшей цифры.
 5 - Tone Portamento + Volume Slide.   Эф-
фект аналогичный эффекту А,но во время его
действия сохраняется действие эффекта   3,
если он до этого был.
 6 - Vibrato + Volume Slide.Аналогичен эф-
фекту А, но действие предыдущего эффекта 4
сохраняется.
 7 - Tremolo. Быстрое включение-выключение
звука.  Старшая  цифра  инф. байта  указы-
вает время, на которое инструмент  включа-
ется,  а младшая - время выключения.
 8 - Не используется.
 9 - Sample Offset. Задает смещение от на-
чала инструмента для  проигрывания текущей
ноты.
 A - Volume Slide. Плавное изменение гром-
кости, старшая цифра инф. байта  указывает
скорость увеличения громкости, а младшая -
уменьшения.
 B - Position Jump.Переход на заданную по-
зицию в списке pattern'ов после исполнения
текущей ноты.
 C - Set Volume. Указание громкости  теку-
щей ноты в пределах 0-64 (если не указана,
берется из списка инструментов).
 D - Pattern Break. Обрывает воспроизведе-
ние текущего  pattern'а  после  исполнения
текущей ноты и переходит к следующему pat-
tern'у по списку.
 E - Misc. Commands.Старшая цифра инф.бай-
та задает номер команды из  дополнительных
шестнадцати, младшая цифра - код этой  ко-
манды.
 F - Set Speed.  Установка темпа. Если   в
диапазоне 0-F, то грубая, если больше,  то
плавная.

 Дополнительные команды:

 E0- Filter On/Off. Судя по всему, это ка-
кой-то аппаратный фильтр    верхних-нижних
частот.
 E1- Fineslide Up. ---
 E2- Fineslide Down. ---
 E3- Glissando Control ---
 E4- Vibrato Control ---
 E5- Set Finetune. Плавная настройка  тона
в пределах одного полутона.
 E6- Patternloop. ---
 E7- Tremolo Control. ---
 E8- Не используется.
 E9- Retrig Note. Повторение тек. ноты   с
темпом из младшей цифры.
 EA- FineVol Up. ---
 EB- FineVol Down. ---
 EC- NoteCut. ---
 ED- NoteDelay. ---
 EE- PatternDelay. ---
 EF- Invert Loop. ---

 Все перечисленное было получено   методом
научного тыка ... Остается только поблаго-
дарить Дмитрия Комиссарова (XPEHsoft)   за
неоценимую помощь.

 



Другие статьи номера:

От авторов - Восьмой номер не заставил себя долго ждать.

Новости - M.O.T сделал нашему музыканту Wolfу компьютер.

С вершин - Описание формата файлов *.MOD музыкального редактора Amiga ProTracker.

Алгоритмы - вращение в трехмерной системе координат. Матрицы.

Галерея - несколько фоток с Consul Party'97.

Музыкальная страничка - песня "Все пройдет" - Гражданская Оборона.

Эпилог - авторы газеты.


Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
IS-DOS - New resident for is_dos Scorpion (CMOS).
Мозаика - НЛО-2, распространяемый в Москве. Небольшая заметка о работе Alex-BBS.
Реклама - Реклама и объявления ...

В этот день...   14 декабря