/*  _______         ____    __         ___    ___
 * \    _  \       \    /  \  /       \   \  /   /       '   '  '
 *  |  | \  \       |  |    ||         |   \/   |         .      .
 *  |  |  |  |      |  |    ||         ||\  /|  |
 *  |  |  |  |      |  |    ||         || \/ |  |         '  '  '
 *  |  |  |  |      |  |    ||         ||    |  |         .      .
 *  |  |_/  /        \  \__//          ||    |  |
 * /_______/ynamic    \____/niversal  /__\  /____\usic   /|  .  . ibliotheque
 *                                                      /  \
 *                                                     / .  \
 * modplug.txt - Some comments on ModPlug Tracker     / / \  \
 *               and its compatibility with other    | <  /   \_
 *               tracking tools.                     |  \/ /\   /
 *                                                    \_  /  > /
 *                                                      | \ / /
 *                                                      |  ' /
 *                                                       \__/
 */


********************
*** Introduction ***
********************

There are two 'authorities' on how the various tracker files should be
played. The first is the original trackers; I consider these the true
authorities because they were around earlier, they created their own formats,
and they mostly play the music the same on every computer (exception: IT's
support for MIDI output).

The second is ModPlug Tracker. It is not the only third-party tracker, but it
is by far the most used. I have some issues with ModPlug Tracker, which I
shall explain below. However, I do use ModPlug Tracker because it is user-
friendly. I recommend that anyone planning to compose music in ModPlug
Tracker read this document.

DUMB's loyalty is to the original trackers, not ModPlug Tracker. Please bear
this in mind when reporting bugs. ModPlug Tracker is now available with
source code, so you may be able to use its own music playback engine if you
prefer; but read this file anyway!

   ModPlug Tracker - http://www.modplug.com/
   Open Source Version - http://sourceforge.net/projects/modplug/


*************************
*** Incompatibilities ***
*************************

There are a few situations in which ModPlug Tracker's playback engine differs
from the original trackers' playback engines. I shall list the five I am most
aware of, in order from least to most annoying:

5. Create a new IT file. Create a multisample instrument, for example a
   piano. Play a low note. Then go up the scale, but in the pattern data,
   make sure the instrument column is blank; put in only the notes. Play this
   with ModPlug Tracker, and play it with Impulse Tracker or DUMB. Impulse
   Tracker and DUMB change sample as you go up the scale; ModPlug Tracker
   does not.

4. Arpeggio and Retrigger Note effects behave badly when combined with
   Portamento, which can appear in the volume column. While Retrigger Note
   isn't too bad, Arpeggio sounds completely wrong. Try it and see what
   happens. Then repeat the experiment in Impulse Tracker, or play the file
   with DUMB.

3. The filter algorithm is incorrect. Impulse Tracker uses a standard low-
   pass resonant filter algorithm with a slight modification to increase the
   resonance (the poles are closer to the unit circle). ModPlug Tracker does
   not incorporate this modification. As a result, filtered channels sound
   somewhat weaker.

2. When looping, ModPlug Tracker resets all variables. The original trackers
   do not do this.

1. Worst of all, ModPlug Tracker has no regard for playback volume, and
   generally has a much lower output level than the original trackers. You
   can adjust this in the program set-up. The control has been moved out of
   the file into the user's domain, which makes it difficult to ensure that
   your file will play at a reasonable volume everywhere. I have plenty of
   files that distort horribly with DUMB and Impulse Tracker because they
   were written with ModPlug Tracker.

Cases 3, 2 and 1 lead people to create IT files that play badly in the
original trackers. If some of these problems could be fixed, I'd be all for
it - but I was once told these problems were reported to the author and he
had no motivation to fix them. ModPlug Tracker is now open source, but I
suspect fixing 3, 2 and 1 would be deemed detrimental to too many people's
music by now.

If you are incorporating music into a game, you can work around the volume
problem in your program. When you pass a volume to al_start_duh() or
equivalent, try passing a lower value than 1.0f. Be drastic; try 0.5f, 0.2f,
and maybe even 0.1f, until you find a level that sounds loud enough but
doesn't distort. However, for neatness I would always recommend fixing the
module by changing its mixing volume.


******************
*** Extensions ***
******************

ModPlug Tracker has also made various extensions, mostly to the IT format.
These are useful if you are keeping your module files private and
distributing MP3 or OGG files. However, if you wish to distribute the module
files, you will want to avoid them.

DUMB currently supports one of ModPlug Tracker's extensions, namely stereo
samples, but supporting the others is not high on my list of priorities. The
support for stereo samples is only in there because I did not know it was an
extension at first! Impulse Tracker's own format documentation makes
provision for stereo samples but states that they are not supported yet.

Other extensions ModPlug Tracker has provided mostly take the form of extra
effects. For instance, S98 and S99 can be used to enable or disable reverb. I
believe the latest versions of ModPlug Tracker offer alternative types of
filter, such as high-pass and band-pass. As soon as an IT file uses any of
these features, it will play incorrectly with Impulse Tracker.

By far the most evil extension provided by ModPlug Tracker is the effect
plug-ins. These enable IT files to use VST effects. I recently downloaded an
IT file that uses some effects from a collection named "DirectX Media Audio
Effects". I doubt these effects will be ported to Linux any time soon.

All in all, the extensions are having the result of making all the other IT
players, and Impulse Tracker itself, look bad.


******************
*** Conclusion ***
******************

ModPlug Tracker is trying to be two things at once, and is going about it
slightly wrong. It wants to be an editor for the existing formats, allowing
Windows users who have limited DOS support to continue tracking using the
same file formats. This is fairly noble. The problem arose when it took it
upon itself to modify the formats, make up its own rules and take advantage
of everything available including system-specific features, which is useful
as long as you will be distributing your music prerendered. In my opinion,
ModPlug Tracker should have come out with its own file format, in which all
these extensions would have found a home. As it stands, you can use all the
extensions and still save your music as an .it or .xm file, which is asking
for trouble.

Despite all the above problems, I do recommend ModPlug Tracker as an editor,
provided you are careful not to use ModPlug Tracker's extensions or rely on
its incompatibilities unless you really don't intend to distribute your
'source' module file.

Oh, and by the way, save your final version with Impulse Tracker. Then the
samples will be compressed for you!


Ben Davis
entheh@users.sf.net
