Sign in Join

Live chat for Free Pascal, Lazarus, Delphi and every Pascal programmer.

Catalog · How the catalog works

Random project

dmm2xm

Converter of Doom2D music to tracker music XM and vice-versa.

View on GitHub

Anyone may press Interesting, signed in or not. It helps others find this project.

Member rating

No ratings yet.

Sign in to rate this project.

README

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

Написано 14 сентября 2007 года и дополнено много лет спустя.
Данный текст имеет смысл, будучи приложен к dmm2xm v1.5.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 будет играть ее с начальной громкостью.
- Если есть ноты, переходящие на следующий паттерн, то в DMM они
  затихнут. Можно либо продублировать ноту, либо склеить паттерн
  со следующим.

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

"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.5.1 [13.04.2023]
- Подкорректировано исправление предыдущего бага.

v1.5 [31.03.2023]
- Исправлен баг в конвертации xm->dmm: сдвигались ноты из-за длинных задержек.

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)