The MODfile to MIDIfile converter.
Written and designed by Alexander Stock.
MOD2MIDI.EXE -- the program.
MOD2MIDI.DOC -- this file.
GUITAROU.MOD -- a sample MODfile.
GUITAROU.MID -- the finished product.
GUITAROU.SET -- the saved settings file.
Soon after my introduction to MODfiles, a mere two years ago, I became
aware of their limitations. Not the least of these is their incompatibility
with standard musical notation. They are also limited by the quality of
their recording, and the hardware used to play them back. But there is a
lot of good music in mod format, and I wanted to have access to it. I felt
the need for a program to convert these MODfiles into MIDIfiles that I
could play on my sound card. This would give me better quality sound, as
well as allow me to view the music in standard notation, and manipulate it
using the music software provided with my card. From this simple idea grew
a quite complicated algorithm, with many added features. This is its first
FILE.MOD => ºMOD2MIDI.EXEº => FILE.MID
[FILE.SET] => ÈÍÍÍÍÍÍÍÍÍÍÍÍ¼ => [FILE.SET]
User input ÄÙ
MOD2MIDI takes as input a 15 or 31 sample MODfile, and, with data from
the user, generates a type one MIDIfile, with six tracks and fourty-eight
ticks per crotchet. In addition, it generates a settings file, to save the
user information, and loads this file if the same MODfile is ever worked on
MOD2MIDI can be run from the command line. It can accept the name of a
MODfile as a parameter, but if the name is not given, or the file does not
exist, a window will come up, asking for the name of the MODfile. Enter the
path and name of the file, as requested, and press Enter or Return. The
'.MOD' extension is assumed, but if another extension is specified, the
program will look for that file. If the file does not exist, another window
will appear and ask you to try again.
Once the MODfile has been located, a table will appear containing
information on the five midi tracks. These tracks are ...
Track Two Correspond to the four MOD tracks.
Track Three Instrumental samples are sent to these tracks.
Percussion Rhythm and sound effect samples are sent to this track.
You must enter the data by using the cursor keys to move the cursor onto
the field you want to change, and pressing return. A window will appear
below the table, asking you for the new information. The columns of the
table are ...
Channel The midi channel on which each track appears. Each of the four
instrumental tracks must be set to different instrumental
channels of your sound card. The percussion track must be set to
the rhythm and sound effect channel of your sound card. Channels
are numbered from 1 to 16.
Pan The balance or panpot associated with each track. Pan position is
from -7 on the far right, to 7 on the far left. Pan does not apply
to the percussion track.
Name The name of each track. This is a sixteen character string saying
anything you like. Most midi players will show track names.
The default settings are ...
Track Pan Name
----- --- ----------------
Track One 2 7
Track Two 3 -7
Track Three 4 -7
Track Four 5 7
Percussion 10 N/A
Once the table is to your satisfaction, press Escape when no window is
asking for more information. After a short while, another table will
appear, with information on the samples. You must complete this table in
the same way. Only eight of the fifteen or thirty-one samples are displayed
at once. Use Page Up and Page Down to view the previous or next eight
samples. Samples that are not valid are filled in yellow. The columns of
this table are ...
Name Twenty two characters, identifying the sample. These are taken
from the MODfile, and are not used in the MIDIfile.They cannot
be changed by the user.
Percussion Whether the sample is a percussion sample or an instrumental
sample. Instrumental samples are played on the channel
corresponding to the track on which they occur. Percussion
samples are played on the rhythm and sound effect channel. Their
pitch is ignored by the converter, and Chord and Transpose do
Program Which midi program or percussion effect is to be played in the
place of the sample. Consult your sound card manual for the full
list of programmes and effects available to you. Midi programmes
are different from percussion effect, and are used differently
by the converter, but are entered in the same column, in the
same way. Program is a number from 0 to 127.
Volume Some samples are not recorded at normal volume. In the midi
file, they may dominate the music, or be hidden by other
samples. Volume allows you to change the volume at which the
midi programmes are played. A Volume of 37 will mean that the
program is always played at maximum volume, and a Volume of -73
means that the program will always be played with zero volume. A
Volume change of 10 will double the playing volume, clipping it
to maximum, and a Volume of -10 will halve the playing volume.
Chord Some samples are not simple notes, but are chords. If chord is
set to Minor, the converter will build a minor triad, rather
than a single note whenever that sample appears. Likewise, if
Chord is set to Major, the sample will be played as a major
triad, and if Chord is set to Fifth, a perfect fifth. Chord is
not applicable to percussion samples.
Transpose Some samples are not recorded at the pitch at which they will be
played. Mostly they will need to be transposed up or down an
octave (12 semitones). Some will need to be transposed by other
intervals to make them sound right. Transpose is the number of
semitones (-128 to 127) by which the sample will be transposed
when it is played. Transpose is not applicable to percussion
The default settings for each valid sample are ...
Percussion Program Chord Transpose
---------- ------- ----- ---------
No 0 None 0
When you have finished adjusting this table, press Escape. You will then
be asked whether you want to save your settings. Press any key to toggle
your choice, and return to choose. If you indicate Yes, a settings file
will be generated, so that you can re-start from where you left off if you
want to convert the MODfile again. If you indicate No, you will have to
start from the previously saved, or default settings you started with last
time, if you ever want to work on this MODfile again. You will next be
asked if you want to continue with the conversion. If you indicate Yes, the
program will begin conversion. A window will appear, indicating which
pattern is being converted, and a status bar indicates the program's
progress. When this is done, the program is finished, and a MIDIfile with
the same name as the MODfile will be generated, as you have specified.
HOW IT WORKS
Once all the parameters have been specified, MOD2MIDI generates six
temporary files in the directory where it is run from. Four are the four
instrumental midi channels, one is the percussion midi channel, and one is
the midi channel for tempo changes. These temporary files are used to save
memory in favour of disk space, and they limit the speed of the program by
the speed of the disk drive. It is best to run MOD2MIDI from a hard disk.
MOD2MIDI runs through each pattern in the MODfile in the order in which
they would be played and converts the information to midi data. As the
MODfile is converted, the midi data is added to the appropriate files. Once
all the patterns have been converted, the six files are copied, adding
headers and tails, into a single MIDIfile. The temporary files are then
MOD2MIDI does not support all of the features of a MODfile, but it
provides some features available to MIDIfiles.
Pitch Bend Up -- Not Supported
Pitch Bend Down -- Not Supported
Pitch Bend to Note -- Not Supported
Vibrato -- Not Supported
Volume Slide -- Not Supported
Position Jump -- Treated as Pattern Break.
Set Volume -- Supported for instrumental samples and for the
first time percussion samples are played.
Pattern Break -- Supported
Set Speed -- Supported
Of the features not carried into the MIDIfile, the pitch bends are the
most significant. These would be very difficult to support, because of the
quantum nature of midi data, which cannot be overcome in the same way that
mod-players overcome the same problem with mod data. Vibrato and volume
slides are hardly ever used. Position jump is a method by which a MODfile
can be made to repeat endlessly. This cannot be supported by the midi
format, so Position Jumps are ignored, and treated like Pattern Breaks.
This should not produce any strange discontinuities in most cases. Position
jumps are also hardly ever used.
Pan in MODfiles is available to those of us with a stereo D/A converter,
or a SoundBlaster Pro. However, two tracks are always played full left, and
the other two are always played full right. The converted MIDIfile has each
track panned to any one of fifteen different positions, at your
specification. The Pan position is a property of each instrumental track,
and can not be made to change during the playing of the MIDIfile. Each
track can also be named. The names will usually be displayed by the midi
LIMITATIONS AND PROBLEMS
MOD2MIDI is limited in many ways by incompatibilities between the
different music formats, and the capabilities of your sound card. MOD2MIDI
requires a lot of information from the user, and the resulting MIDIfile is
rarely perfect. These are some of the problems that can occur.
Since samples can only be assigned to midi programmes or percussion
effects, samples of speech or phrases of music can not be adequately
represented. Some sound cards can play sound effects on the percussion
channel, which, with a little imagination, can cope with some complicated
Because pitch bends are not supported, MODfiles using pitch bends may
sound wrong in places. This can be fixed if you convert the MIDIfile to the
format of your music software, and put the pitch bends in yourself. Most
music software comes with a midi conversion program. This is a method for
fixing most problems with the MOD2MIDI MIDIfiles. There are also editors
for the midi format, which can solve some of these problems.
The midi format requires each note to be turned on, and turned off again,
whereas the MODfile format only requires that each note be turned on.
MOD2MIDI only knows that a note should be turned off when the next note
arrives on the same track. This causes problems when a track is left alone
and assumed to be silent. Some mod samples do not sustain, and die away
quickly if another note is not played. If a sustaining program has been
chosen for such a sample, it will continue to play until the track would be
used again. This can be solved by converting the MIDIfile, or by editing
it, and moving the note off signal to the correct place.
Samples may be recorded too loud or too soft, or at the wrong pitch. They
sound right in the MODfile, but not in the MIDIfile. Wrong pitch or wrong
volume can be solved by changing the transpose or volume properties of the
sample before conversion. This is a process of trial and error.
Midi data can only be fed to a sound facility at a certain rate, which is
too slow in some cases. Very fast music, or music with a lot of effects,
will be slowed down by the midi player, because too much information has to
transmitted at once.
If MOD2MIDI is caused to halt unnaturally, the temporary files may still
exist. You can delete them if you want, or leave them there.
-- Get to know the MODfile well before you try to convert it. This will
tell you what each sample sounds like, and how it is used.
-- Try to assign, if possible, programmes that have no sustain to samples
that do not sustain, to avoid notes sustaining when they should be
silent. This isn't always possible.
-- If your sound card doesn't have a Percussion track, you can assign
percussion samples to rhythm effects on the instrumental channels.
-- You don't need to find programmes or effects that sound exactly like
the sample. Other programmes will sound different, but still sound
good. Be imaginative.
-- String samples often need to be transposed up an octave. Bass guitar
samples sometimes need to be transposed down an octave. Once again,
it's a case of trial and error. That's why you can save your settings.
-- It is usually a good idea to reduce the volume of chord samples, so
that the extra notes don't sound overstated.
-- To achieve the discordant effect of some electric guitar samples, try
adding a fifth to the note. This doesn't sound quite right, but works
fairly well if you don't have the right sample.
-- Sometimes, invalid samples are used to silence sustaining samples.
These work fine on MOD2MIDI, but sometimes valid samples are used for
the same purpose. If you come across a silence sample, don't bother
about setting a program. Just set the volume to -73, so that the sample
will always be played silently.
Note on Guitarous:
GUITAROU.MID is the MIDIfile created from GUITAROU.MOD, by MOD2MIDI. The
instrument settings are in GS standard format. If your sound card is not GS
standard, then re-convert the file. You will only need to change the
program settings. GUITAROU.MOD was composed by The WARLOCK / Grace S.
Apologies that they could not be notified of its inclusion in this package
These are the conclusions of the MODfiles I have tested MOD2MIDI on.
POWER.MOD -- Don't bother with these. They contain too much
WASTE.MOD -- digitised speech and complex samples.
POPCORN.MOD -- Worked perfectly. One of the first MODfiles I ever
converted. Very simple. Only the strings sample needed
to be transposed.
AXELF.MOD -- Midi format could not improve much on the original
MODfile. Lots of problems with note sustain.
BREATH.MOD -- Worked perfectly, and demonstrated the success of the
Chord feature. I originally wanted to use this for the
demonstration of MOD2MIDI, because it worked so well.
LAMBADA.MOD -- Not bad. Problems with the volume of samples were solved
with the Volume control. The chords and volume changes
FAIRLITE.MOD -- Ended up different, but worked well.
GREENSL1.MOD -- Because of the numerous volume changes, the midi signals
seemed to be arriving late in places. One of the samples
had to be transposed by an amount that I never got quite
right, but I found an acceptable substitute for the two
ALIVE.MOD -- Although the pitch bends were lost, this MODfile still
made a good MIDIfile.
HOUSE_OF.MOD -- Big problems with sustaining samples and pitch bends.
There was also a percussion effect that was played at
more than one pitch, so I had to assign it to an
SDMC.MOD -- This one came out quite good, but there were problems
with a sample that seemed to need to be transposed two
BB2.MOD -- The MIDIfile provided a much better sound, but without
the pitch bends, the brass sounded out of tune in many
SHADOWFI.MOD -- Without pitch bends, I had to use my imagination, but
all the volume changes came through, and the effect was
preserved. It came out rather good in the end.
OXYGENE.MOD -- It lost a few volume slides, but they weren't needed. A
sound effect was used to replace the wind sample, and I
had to be imaginative with most of the other samples.
The string chords needed to be hushed quite a bit. All
the other volume effects worked well, and it sounded
better as a MIDIfile.
GUITAROU.MOD -- This one used everything MOD2MIDI had, and it sounded
quite good. There was a pitch bend or two, but the music
lived without them.
Here are some features that may or may not appear in later versions of
-- The rest of the MOD effects; pitch bends, etc.
-- A PWM routine to play the samples when you choose the settings.
-- A midi routine to play the midi programmes while you choose the
-- Pan as a property of samples instead of tracks.
-- A library of sample attributes and settings.
Programmer: Alexander Stock
51 Wilpena Street
Eden Hills 5050
March to October 1993, 1994
Assistance: Daniel Steer - lots of help with programming and supply
of software utilities and MODfiles.
March to October 1993, 1994
Geoffrey Bennett - supply of important information and
Much thanks also to these accomplished programmers, whose software was in
constant use during the making of MOD2MIDI.
Mark J. Cox
Modplay Pro Version 2.19b
MOD2MIDI is Copyright (c) 1992,1993 by Alexander Stock.
This program is shareware. You are permitted and encouraged to distribute
this software freely, provided it is not altered in any way. You may use
this software, without charge, for a trial period of thirty days. After
this time, you are obliged to register by sending $20 to the author, at the
above address. Registration of this software entitles the registeree to
receive a updated version of MOD2MIDI as soon as one becomes available.
Please indicate 3.5" or 5.25" disk.
No responsibility is taken by the author for any loss or
damage to property or person caused by this program. MOD2MIDI may not be
used for any commercial purpose, without written permission from the
The people credited above are all entitled to a free copy of this
program, with no ethical obligation, and will be sent one as soon as possible.
MOD2MIDI has been rigorously tested on a Roland LAPC-1 sound card, and a
Roland Sound Canvas. MOD2MIDI.EXE was written in TurboPascal, using the
HTScreen unit, by Harald Thunem.
I will not distribute the source code to MOD2MIDI unless I am deeply
flattered by words of appreciation, or by lots of money. Please contact me,
and let me know what you think.