MOD2MIDI.DOC
The MODfile to MIDIfile converter.
Written and designed by Alexander Stock.


 CONTENTS

          MOD2MIDI.EXE    -- the program.
          MOD2MIDI.DOC    -- this file.
          GUITAROU.MOD    -- a sample MODfile.
          GUITAROU.MID    -- the finished product.
          GUITAROU.SET    -- the saved settings file.


 INTRODUCTION

   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
 incarnation.


 FLOWCHART
                        EIIIIIIIIIII?
           FILE.MOD  => ?MOD2MIDI.EXE? =>  FILE.MID
          [FILE.SET] => EIIIIIIIIIII? => [FILE.SET]
                              
                  User input AU

   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
 again.


 USAGE

   MOD2MIDI [file[.mod]]

   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 One
   Track Two          Correspond to the four MOD tracks.
   Track Three        Instrumental samples are sent to these tracks.
   Track Four

   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
              not apply.

 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
              samples.

   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
 deleted.


 FEATURES

   MOD2MIDI does not support all of the features of a MODfile, but it
 provides some features available to MIDIfiles.

 MODfile Features

   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

 MIDIfile Features

   Track Pan
   Track Name


   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
 player.


 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
 samples.


   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.


 HINTS

 --  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.

 TESTING

   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
 before release.

   These are the conclusions of the MODfiles I have tested MOD2MIDI on.

   SIMPSONS.MOD
   POWER.MOD       --  Don't bother with these. They contain too much
   WASTE.MOD       --  digitised speech and complex samples.
   TOUCHME.MOD
   etc.

   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
                       sounded good.

   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
                       speech samples.

   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
                       instrumental program.

   SDMC.MOD        --  This one came out quite good, but there were problems
                       with a sample that seemed to need to be transposed two
                       different ways.

   BB2.MOD         --  The MIDIfile provided a much better sound, but without
                       the pitch bends, the brass sounded out of tune in many
                       places.

   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.


 HIGHER THINGS

   Here are some features that may or may not appear in later versions of
 MOD2MIDI.

   --  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
       settings.
   --  Pan as a property of samples instead of tracks.
   --  A library of sample attributes and settings.
   --  MIDI2MOD.


 CREDITS

 Programmer:   Alexander Stock
               51 Wilpena Street
               Eden Hills  5050
               South Australia
               email: [email protected]
               March to October 1993, 1994

 Assistance:   Daniel Steer -    lots of help with programming and supply
                                 of software utilities and MODfiles.
               email: 9129317s.lux.levels.unisa.edu.au
               March to October 1993, 1994

               Geoffrey Bennett -     supply of important information and
                                      beta testing.
               email: [email protected]
               Always valid

   Much thanks also to these accomplished programmers, whose software was in
 constant use during the making of MOD2MIDI.

   Mark J. Cox
   [email protected]
     Modplay Pro Version 2.19b


   Norman Lin
   [email protected]
     ModEdit v2.0
     ModEdit v3.0


   Harald Thunem
   [email protected]
     HTSCREEN.TPU


 LEGALITIES

   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
 author.

   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.