Кое-что про dmm2xm
==================

Написано 14 сентября 2007 года и дополнено много лет спустя.
Данный текст имеет смысл, будучи приложен к dmm2xm v1.4.1.


Содержание
==========
* Описание
* Использование
* Обратная конвертация
* Сообщения программы
* Новости
* На будущее
* Благодарности
* Прочее


Описание
========

dmm2xm, как понятно из названия, конвертирует музыку из формата
DMM в более распространенный формат XM, который можно проиграть
в Winamp'е, XMPlay, или практически в любом другом проигрывателе.

Также можно загрузить полученную XM в трекере (Open ModPlug
Tracker, BeRoTracker, MilkyTracker и другие), и отредактировать
музыку, улучшить инструменты, сделать ремикс и прочее.

dmm2xm претендует на полную конвертацию, а также даже добавляет
стерео и исправляет некоторые оригинальные сэмплы, что улучшает
качество оригинальной музыки.

Начиная с версии 1.0, доступна и обратная конвертация, из XM и MOD
в DMM. Большинство простых мелодий конвертируются неплохо.
Сложные мелодии необходимо предварительно отредактировать.
Подробности в разделе "Обратная конвертация".

DMM используется в игре Doom2D (c) Prikol Software.

Сделано для проекта Doom2D: Forever (http://www.doom2d.org/)
и всех фанатов игры Doom2D.


Использование
=============

dmm2xm может конвертировать музыку как из DMM и прилагающихся
к ним инструментов, так и напрямую из doom2d.wad.
Теоретически, программа работает и с другими вадниками с DMM,
если найдешь такие, пожалуйста, дай мне знать.

Инструменты ищутся в пяти местах:
- в указанном ваднике;
- рядом с указанным файлом;
- в папке dmm2xm;
- в папке dmi\ рядом с указанным файлом;
- в папке dmm2xm\dmi\.
Инструменты должны называться по форме "DMI00nn" без расширения.

dmm2xm имеет синтаксис:
dmm2xm [-q <число>] [-r <число>] [-o <файл>] [-f <имя>] [-m] [-b]
       <файл.dmm>|<файл.wad>

Примеры:
dmm2xm -q 8 -o с:\music\doom2d\ayoy.xm АЙОЙ.dmm
dmm2xm ALLRIGHT.dmm
dmm2xm doom2d.wad (выведет список доступных имен)
dmm2xm -f ALLRIGHT doom2d.wad

Можешь перетягивать DMM на иконку dmm2xm, если ты фанат эксплорера,
только будешь лишен многих возможностей.

-q, Quantization - значение, на сколько округляются задержки нот.
Чем оно больше, тем компактнее записываются ноты.
В DMM обычно встречаются задержки 8, 12, 16 и большие, а значит,
чаще всего можно округлить на 4 без боязни сбить ноты с ритма.
Это значение и поставлено по умолчанию.
Выставляй наибольшее значение, которое не приводит к предупреждениям.
Для "АЙОЙ.dmm", например, подходит 8.

-r, Rows - на сколько максимум строк делить паттерны. Для удобства
редактирования, возможно, будет удобно поставить значение вместо 256,
например, 32, 48, 64 или 96.

-o позволит сохранить в XM с другим
именем или в другом месте.

-f указывает, какой файл брать из doom2d.wad.
Имя файла чувствительно к регистру.

-m оставляет музыку в моно, вместо конвертации в стерео.

-b включает режим эмуляции бага, возникающего в игре при использовании
SoundBlaster на частоте 44 КГц. Глюк заключается в повышении тона на
половину ноты, в результате музыка и звуки в игре звучат чуть быстрее.

Достать файлы из doom2d.wad можно с помощью плагина QPak для Far'а
(http://downloads.sourceforge.net/farplugins/qpak162.rar).


Обратная конвертация
====================

Если ты хочешь вставить музыку в карту классического Doom2D,
то эта функция для тебя.

Синтаксис:
dmm2xm [-o <файл>] <файл.xm>|<файл.mod>

Пример:
dmm2xm song.xm

Многие эффекты не поддерживаются из-за ограниченности формата DMM,
а некоторые пока не реализованы.

Поддерживаемые в текущей версии эффекты:
----------------------------------------------------------------------
Эффект   Название              Примечание
----------------------------------------------------------------------
Cxx      Установка громкости   Установка ненулевой громкости без ноты
                               не поддерживается (ограничение DMM).
Dxx      Разрыв паттерна       Параметр игнорируется, следующий
                               паттерн записывается с первой строки.
Fxx      Установка скорости    Поддерживается полностью.
----------------------------------------------------------------------

Как лучше отредактировать музыку перед обратной конвертацией:
- Постараться, чтобы темп (BPM) был кратен 125 или 166, иначе
  полученная DMM может звучать быстрее или медленней оригинала.
  Для этого можно добавить в свободную строчку переменных
  эффектов Fxx, например, так: F04 F03 F04 F03 ...
- Постараться, чтобы не звучало слишком низких или слишком высоких
  нот, а также не было сэмплов с высокой частотой (предположительно
  больше 44000 Гц), иначе Doom2D будет играть такие ноты как одну и
  ту же. Тестируй.
- Избавиться от таких случаев, когда нота затихает от эффекта Axx
  (Volume slide), в Doom2D она не будет затихать. Желательно
  поставить выключение ноты где-то после середины громкости ноты.
- Иногда лучше заменить установку громкости ноты на ее
  выключение, если громкость устанавливается отдельно от ноты.
  Doom2D будет играть ее с начальной громкостью.


Сообщения программы
===================

"Error: file not found!"
Правильно указывай файл.

"Error: invalid quantization value, should be 1 <= Q <= 31."
Правильно указывай округление.

"Error: unknown DMM format!"
Программа конвертирует только DMM и только версии 0.

"Warning: quantization may be wrong or too large, misaligned N notes."
В некоторых мелодиях ноты смещены изначально, например, имеют
задержку 15, 17, 31, или 33 ("ДУШЕВНАЯ.dmm"). Тут можно не
беспокоиться, и ставить округление 8. Ноты выправятся до задержек
16 и 32, как и должно быть по идее.
Обычно смещений мало, от 2 до 33 в таких случаях.

Чтобы не мучиться с округлениями, советую воспользоваться
"conv_wad.bat" для doom2d.wad или "conv_dmm.bat" для уже
выдранных DMM.

Сообщения c "possibly broken data" можно получить, только подсунув
программе битые (неправильно выдранные) DMM.

"Warning: found more than 11 instruments, stereo is not available."
С одной стороны, тебя можно поздравить, ты нашел нестандартный DMM
с большим количеством инструментов. С другой стороны, в программе
отсутствует таблица для превращения такого количества инструментов
в стерео.


Новости
=======

Что изменилось в текущей версии dmm2xm.

v1.4.1 [21.12.2013]
- Добавлена эмуляция бага с SoundBlaster на 44 KHz при конвертации dmm->xm

v1.4 [14.04.2013]
- Изменен механизм записи нот, теперь используется эффект задержки нот,
  чтоб лучше вписаться в паттерн. Конвертация точна как никогда!
- Также используется эффект задержки самого паттерна - лучше избегать
  появления, так как не все проигрыватели поддерживают.
- Если количество строк в паттерне больше заданного максимума
  (по умолчанию 256), они разделяются на несколько паттернов.
- Программа выводит больше информации.
- Автоматическая поправка некоторых сэмплов из игры.
- Изменена обработка командной строки. Без файла и с -f подразумевается
  doom2d.wad.
- Если отсутствует порядок паттернов в DMM, программа создаст его сама.

v1.3 [18.11.2007]
- Мелкие исправления.

v1.2 [02.11.2007]
- Установка нулевой скорости игнорируется в обратной конвертации.
- Еще немного исправлена обратная конвертация.

v1.1 [01.11.2007]
- Исправлен баг с пищанием в обратной конвертации.
- Исправлено определение скорости, добавлен эффект Fxx в обратной
  конвертации.
- Мелкие исправления.

v1.0 [01.10.2007]
- Исправлена и изменена генерация цикла. Теперь цикл соответствует
  оригиналу.
- Изменена конвертация из DMM в XM. На слух отличий нет, файлы стали
  меньше.
- Доступна обратная конвертация!
- У инструментов убрано расширение.
- Добавлена возможность оставить музыку в моно.
- Исправления.

v0.9 [20.09.2007]
- Ускорена конвертация на порядок.
- Улучшена работа с командной строкой.
- Теперь можно доставать музыку напрямую из doom2d.wad и других WAD.
- Батник "convall.bat" разделен на "conv_dmm.bat" и "conv_wad.bat".
- Мелкие исправления.

v0.8
- Добавлено стерео.
- Мелкие исправления.

v0.7
- Исправлено перенаправление вывода в файл, написан батник
  "convall.bat".
- Исправлен баг с задержкой ("КОНЕЦ.dmm" теперь можно слушать).
- Улучшены сообщения о смещенных нотах, теперь легко посмотреть в
  трекере, какая нота не туда попала, или наоборот, удачно округлилась
  и встала на место.
- Теперь удаляются неиспользуемые каналы.
- Программа не ругается на пустые инструменты.
- Мелкие исправления.

v0.6 [14.09.2007]
- Первая публичная версия.


На будущее
==========

Что планируется в следующих версиях dmm2xm:

- Улучшить обратную конвертацию? Хотя я вам скажу, ребята,
  поддерживайте лучше стандартные трекерные форматы!


Благодарности
=============

Спасибо BeRo за модуль BeRoXM для Delphi, пишущий XM.

Спасибо 3EPHOEd'у за документацию формата DMM и за батник.

Спасибо Jabberwock'у за тестирование.

Спасибо -=CHE@TER=-'у за читалку вадников.

Спасибо Черному Думеру за указание на ошибку, связанную со слишком
большими паттернами.


Прочее
======

Все треки из игры конвертируются 1 в 1.
Неточности в них - от самих авторов.

В папке source ты найдешь исходники dmm2xm.
Они будут компилироваться любой версией Delphi, начиная с четвертой,
а также Free Pascal'ем, начиная с версии 2.0.4.

Если найдешь баги, или захочешь что-нибудь сказать,
с Grom PE можно связаться
- по почте или джабберу: i@grompe.org.ru
- через сайт: http://grompe.org.ru/

Со мной (т.е. с wormsbiysk`ом) можно связаться:
- так же, по почте: wormsbiysk@yandex.ru
- либо, что лучше, оставив сообщение на форуме Doom 2d:Forever
  http://doom2d.org

С уважением, Grom PE и Артем Васильев (wormsbiysk\LSA)
