                                     
                     ۱                 
                                        
                                         
                                         
                                         
                                     

                                       
                 ۱                     
                                        
                                         
                                         
                                         
                                  

                                    
                                             
                                             
                                    
                                             
                                              
                                         


                version 5.406 - (C) Charles Attard - Jan 1998

                          MMP can be found on Internet :

             Home page at
                          http://www.cerise.ml.org/charles

             where you'll always find the very latest version, and

             ftp://ftp.cdrom.com/pub/demos/incoming/music/programs
             ftp://ftp.cdrom.com/pub/demos/music/programs/players
             ftp://ftp.cdrom.com/pub/simtelnet/msdos/music
             ftp://ftp.coast.net/simtel/msdos/music

                           And other mirror sites

             If you want to link the MMP player engine in your
             Turbo Pascal/Borland Pascal 7.0 freeware applications, you
             can find the TPUs and a very basic player in:


                       http://www.cerise.ml.org/charles
                  ftp://ftp.cdrom/pub/code/incoming/modunits.zip




                                   Introduction
                                   

      What can it play ?
      


       The Multi Module Player is a very high quality digital music module
      player. It supports the following types of modules :

        669          Composer 669 v1.x Module
                     (8 channels, 64 instruments @17480 Hz)

        MOD          ProTracker , SoundTracker, FastTracker,
                     StarTrekker and TakeTracker
                     (1 to 32 channels, 31 instruments @16574 Hz)

        MTM          Multi Tracker Module v1.x
                     (1 to 32 channels, 64 instruments @16574 Hz)

        NST          NoiseTracker (4 channels, 15 instruments @16574 Hz)

        S3M          Scream Tracker v3.x Module
                     (1 to 32 channels, 100 instruments at any sample rate,
                     16 or 8 bit)
                     Note : Old STM format can easily be converted to S3M
                     format using Scream Tracker v3.x

        XM           Fast Tracker v2.x Module (file version above 1.03)
                     (2 to 32 channels, 128 instruments of 16 samples,
                      16 or 8 bit)
                     As for S3Ms, old XM format (below 1.04) can easily
                     be converted with FastTracker 2.x

       MMP also supports:

        XI           FastTracker instruments (multi-sampled, 16 or 8 bit,
                     with volume and panning envelopes)

        WAV          RIFF wave files (mono, 16 or 8 bit)

        (if you want a tracker and have access to Internet, you
         can try FTP : ftp.luth.se (130.240.16.39) in /pub/msdos/demos ...)

       All the previous files can be included in an archive ARJ or ZIP,
       they will be extracted at run-time.


      System requirements
      


      The hardware support is only Sound Blaster 16/ASP/AWE32(in SB16 mode)
     and Sound Blaster Pro for now. I've got the informations to program many
     types of sound cards (Gravis UltraSound, Pro Audio Spectrum ,
     Windows Sound System) but i don't own them (!) and i need to know from
     you if it's necessary to do so (i will also need your help to debug
     these routines ...).

     The screen output is graphical (640x480x256) and uses VESA v1.0 routines,
      so you need a video card with VESA BIOS EXTENSIONS or a resident patch.

     About memory, MMP uses 3 modes to avoid a 'not enough memory' message
     (very annoying when you have a 4, 8, 16 or more Megabytes of memory
     in your system and you only need some hundreds of kilobytes).
      It uses DOS, EMS and XMS types of memory.
     The possible modes are:

      Mode:    Why MMP uses this mode:

      DOS

               The module loaded is small enough to hold in conventional
               memory. But if an instrument has a size over 64 KB (the
               module loaded is a 669, MTM or XM), MMP will use the
               DOS/XMS 32 bits linear mode instead to avoid truncature.
               This is the fastest mode.

      DOS/EMS

               The instruments can't hold in DOS memory, but the patterns can
               (it is assumed that it will always be the case).
               The instruments are loaded in EMS but are truncated to
               64 KB (you will be warned), as MTMs, 669s and XMs can have
               instruments 1 MB long or more for XMs.
               To avoid this, you must allow MMP to enter XMS 32 bits linear
               mode by disabling any expanded memory manager as EMM386,
               QEMM386 ... and enabling HIMEM.SYS.
               Note that the DOS/EMS mode is slow, so, if you have less than a
               486DX-120 MHz you should really do it !

      DOS/XMS 32 bits linear

               As in DOS/EMS mode, the total size of instruments is too big
               to fit in DOS memory.
               This is the best mode (fast, all free memory is available,
               and samples are not truncated to 64 KB).
               See above to enable it.
               In this mode the processor does linear addressing in real mode !
               The Global Descriptor Table is modified, that's why it's
               totally incompatible with other applications running in
               protected mode or V86 mode.

      MMP tries first to enter XMS-32bit linear mode so it can free the
      conventional memory for DOS shell. If this mode isn't enabled
      (see the config window in MMP) then your processor is in protected mode
      (EMM386, QEMM386 or Windows DOS box are enabled) or there isn't enough
      free XMS memory.


      Why a new player ?
      

       I've always been disappointed by the output quality of players
      (except DMP 3.x+, Mod4Win 2.x+ ) or by the precision of patterns
      playing (all players !).
       Technically, the output is computed in a 32-bit buffer, with a 16-bit
      resolution (even for 8 bits sound card) and is clipped to fit
      in the 16 bit (or 8 bit) output stream. This allows a greater signal to
      noise ratio and is very useful when the number of tracks is high (8 and
       over).
       To improve quality, a dynamic linear interpolator (or dynamic filter,
      or oversampler ...) for each channel can be enabled. It ensures a
      full use of the 16-bit resolution and filters useless harmonics (noise).
       A low-pass filter can also be enabled, instead or with oversampling,
      if you have sensitive ears about high frequencies ... :)
      All these nice things give the highest possible output for all ears !

       MMP version 5.406 has been thoroughly tested with more than 5000
      modules to ensure the highest quality in playing modules. I've spent
      hundreds, perhaps thousands hours listening (well ... not really sure :),
      debugging, listening, debugging ... this player
      (and sometimes debugging, debugging ... ;), so i'm confident in
      its quality !
       Of course, there's always a little bug flying or crawling somewhere,
      so if you can help me to catch it ...
       Moreover, I've also used the associated trackers (Scream Tracker 3.x
      for S3M, Composer 669 v1.x for 669 ...) to have an identical
      interpretation of patterns from the tracker and from MMP.

      Miscellaneous features
      

       + Player coded 'ab initio' (from scratch)
       + 22000+ lines of pascal and 286 assembler
       + 12000+ lines of 386 assembler                                      
       + thirty two 32bits mixing routines (mono, stereo or surround with
         16bits (DOS, EMS) or 32bits (XMS linear) addressing,
         oversampling and 16-bit samples)
       + 16-bit samples support with fewest possible resolution loss
       + 32bits data buffer for clipping. Increases the signal to noise
         ratio
       + Real-time oversampling computed on 28bits. Acts as a dynamic
         low-pass filter thus giving a much smoother signal without
         alterations.
       + Play engine in highly optimized 386 assembler. Scheduling and
         alignement optimizations for Pentium and 486
       + Instruments and samples synthesizer
       + WAV writer from modules or instruments
       + MIDI and keyboard input to play samples
       + Ultra fast FFT implementation of Cooley and Tukey algorithm (1965)
         in 386 assembler (on a Pentium-120 MHz, two hundred and fifty
         1024-points FFTs computed per second, only 4 ms the transform !)
       + Automatic detection of Sound Blaster cards (16, AWE32 and Pro)
       + No file prompt mode (enter MMP <module_name> )
       + List file mode playing (enter MMP <liste.lst> )
       + All Protracker 2.x/3.x (NST, MOD, MTM), Scream Tracker 3.x (S3M),
         Composer 669 1.x (669) and Fast Tracker 2.x (XM) commands supported


      Is MMP running ? OK, let's see how to use it
      


      Basic use
      

        MMP is very easy to use, just launch it, select the unit where
       you have some modules (ctrl+unit or click on unit with mouse),
       select the path, select a module
       then press Enter or click on the module name. The module should
       play (hope so ... ;)
        To pause module playing, press Pause or F4. To exit from MMP (what ?!)
       press alt-x or click on title bar with right mouse button.
        When the module has finished playing, the file selector window
       appears (if help, configuration window, information window and
       full screen instrument list are not on). If you don't want to
       listen more the module, press Enter, F3 or click mouse right button to
       make the file selector window appear and select a new module,
       (or press Esc or Pause or F4 or ... Reset, no ... i was joking ;),
       the fade out will then be activated to make a smooth transition
       (no ultra-clicks !).

        If you know the path to the modules, you can enter it directly. When
       the file selector window is on (or press F3 if not), press alt-C,
       enter then path, then validate with Enter.

       Press F1 under MMP to have some help about keyboard commands.
       (Note: the help is different under the file selector window and
       when you have the main screen)


      For users who don't like the default configuration
      

       I hope there are some ...
       You can display any of five elements, assuming there's enough space
      on the screen :

                          status bar                  (key s)

                      channel descriptor              (key t)

                        instrument list               (key i)

                   oscilloscope (mono or stereo)      (key o)

                  frequency spectrum (mono or stereo) (key p)


       To enable or disable an element, press the associated key or click
       in the menu, at bottom of main screen.
       When enabled, an element will be inserted at the bottom of the list of
       elements on screen.
        That's not much practical but you shouldn't change the configuration
       very often, once you're satisfied.
       To move an element you can use the mouse. Just click on the element
       you want to move (the cursor shape will change), then click on a
       'destination' element which will be replaced by the 'moved' element.
        To change elements size and caracteristics (oscilloscopes, channels,
       spectrums and instrument list) see the configuration menu
       (press c in the main screen).

       Changing the colors
       

        You can change the color of any of the five items :

        (1) The main color (BackGround)
        (2) The current text
        (3) The hilighted text
        (4) The text for data or information
        (5) The cursor of the configuration window

         To change a color you should first select an item by pressing
        the corresponding key '1','2','3','4' or '5' (note: the colors can
        be changed anywhere but in the file selection window).
         Then adjust the color components (Red, Green and Blue) using the shift
        key with 'Ins','Del' for the red component a.s.o ...

         inc red   : shift Ins (or Inser for french keyboards)
         dec red   : shift Del (or Suppr ...)

         inc green : shift Home
         dec green : shift End

         inc blue  : shift Pg Up
         dec blue  : shift Pg Dn

         (note: there's no repeat on the Ins key ... saw that too late :( )

         If you don't want to bother with color components, just hit
         alt-F1 .. alt-F8 to set colors schemes (see help in MMP for
         description, or just try them !)

         You can also directly edit MMP.CFG to change colors, but don't
         forget to launch MMP.EXE once, so it can create MMP.CFG.


       Configuration saving
       


        Whatever you changed is saved in the file MMP.CFG when you quit MMP
       or when you load a new module. You can however disable configuration
       saving by clicking on title bar with left button or by entering alt-c,
       in the main screen. Configuration saving is restored at next module
       load.
        There are two types of parameters, some 'global', some 'partial'.
       The 'partial' parameters are dependent on the number of tracks.
       They are saved in different places of the configuration file, each
       assigned to a 4 tracks block :

                   1-4   tracks
                   5-8   tracks
                   9-12  tracks
                   13-16 tracks
                   17-20 tracks
                   21-24 tracks
                   25-28 tracks
                   29-32 tracks

        (A '*' preceding a parameter means it shouldn't be changed
        by 'hand'. A '**' means parameter shouldn't be changed at all !)

       The 'partial' parameters are the ...

           *Spectrums height
           *Maximum spectrums height
           *Oscilloscope height
           *Maximum oscilloscope height
           *Instrument list height
           *Maximum instrument list height
           Output frequency
           LDI mode (oversampling) switch
           Low-pass filter level
           *Digital amplification level
           Default panning with speakers
           Default panning with headphones
           *Number of displayed tracks
           *Channel display mode
           *Number and type of displayed elements

       (Parameters between {} can be changed in the file MMP.CFG only)
       The 'global' parameters are the ...

           Modules path
           {Temporary path}
           {Write path for WAVs}
           {ZIP extraction command line}
           {ARJ extraction command line}
           File manager display mode
           *MMP mode
           {MIDI keyboard channel}
           Keyboard mode (inhibition)
           {Info line delay}
           {mouse mickeys (delay)}
           Colors
           *Spectrums type (0:mono or 1:stereo)
           *FFT display size
           *FFT size
           Left spectrum video synchronization switch
           Right spectrum video synchronization switch
           Left oscilloscope video synchronization switch
           Right oscilloscope video synchronization switch
           Spectrum scale type (1:linear, 3:power and 2:logarithmic)
           Spectrums scale factor
           Oscilloscope type (0:mono or 1:stereo)
           Plot type (1:dots or 0:lines)
           Loop mode (0:allowed, 1:forced, 2:forbidden)
           Pan switch
           Global surround switch using speakers
           Global surround switch using headphones
           {Fade out delay (ms)}
           Cursor position X
           Cursor position Y
           {Autocontinue switch}
           Menu switch
           **Output mode
           Headphones panning switch

       If you don't understand everything, that's normal, just use MMP ;)
       if you really want to understand, mail me, i always reply.
       (charles.attard@bigfoot.com -> i'm french ... )

       Setting MMP environment
       

         By default, MMP uses the path where MMP.EXE is located to save
        MMP.CFG and temporary file @LIST.
         If you want a user-defined path (useful for example if the medium
        where MMP.EXE lays is write-protected), you can set the environment
        string MMP; at DOS prompt type :

                              set MMP=<MMP_Path>

        where MMP_Path is a legal path definition (ex. with C:\MUSIC\MMP
        you would have 'set MMP=C:\MUSIC\MMP' )
        MMP will then use this path to write its files.

        If you intend to use archives (ARJ and ZIP) then you should set
        (or verify that it's set) the environment string 'TEMP'.
        The modules will be extracted in the path set in string 'TEMP', so
        you could consider enabling a ramdisk, if you have plenty of memory !
        But be careful with ramdisk if you use Windows applications. You could
        receive strange error messages due to insufficient memory capacity
        in the temporary path (I think of Word 6.0-, especially when printing ...)

       Archives support
       

         MMP supports archives formats ARJ and ZIP. The unarchivers
        (resp. ARJ and PKUNZIP, or equivalent) are needed and must
        be accessible as they will be called by MMP with the path set
        in MMP.CFG. If no PATH is set in MMP.CFG (this is default) then
        MMP is dependent on the current PATH set in your system environment
        string PATH.
         Note that when a file is in archive, only file name and size can
        be given (no song title).

         If file extraction fails (Error message 62), the reason could be that:
            - there's no path to the unarchiver
            - the archive is unreadable (corrupted, drive not ready)
            - the temporary path is not writeable
              (invalid, write-protected, insufficient space, drive not ready)
            - there isn't enough DOS memory for the unarchiver
            - the unarchiver version is too old
         Note: file names with path recorded won't be extracted
         (e.g 'MODS/GOODMOD.S3M')
        To check that the path to unarchivers is valid on your system, just
        type 'ARJ' and 'PKUNZIP' at command line.


       Tone generator mode
       

        This mode allows you to play the modules instruments, FastTracker
       instruments (XI) or mono wave files (WAV) on the PC keyboard or
       with the MIDI input.
        A specific configuration (number of tracks, display etc.) is
       loaded when you enter this mode; but, if the file is a module the
       configuration depending upon its number of tracks is loaded.
        When you load an instrument or a wave (i.e not a module), the
       number of tracks is loaded from the configuration file MMP.CFG;
       To change it, you should modify this file; the default value
       is 16 tracks.
        If you have loaded a module in the Multi Player mode and wish to
       enter the Tone generator mode, you don't need to reload the module;
       just hit F12. MMP will stop the module and display in the instrument
       list a red cursor showing which instrument is currently selected
       (the first valid in the list); of course, the instrument list should
       be displayed if you wish to change it with the cursor keys.

       Playing with the PC keyboard
       

        As several functions use the same keyboard keys: the two octaves
       and the function keys 'n', 'c', 't', it is necessary to inhibit
       the two octaves with the key F11.
        Once you have finished with the function keys, you can return to
       the 'play mode' with the same key, F11.
        If you have a MIDI device and think you don't need the PC keyboard
       to play instruments and samples, then just hit F11 to inhibit the
       two octaves; this state will be saved in MMP.CFG.

       The two octaves are:

       For French keyboards:

                                 "   ( - 
                               A Z E R T Y U


                                        G H   K L M
                                       V B N , ; : !

       For US keyboards:

                                2 3   5 6 7
                               Q W E R T Y U


                                        G H   K L ;
                                       V B N M , . /

        An octave transposition is available as two octaves are often too
       few. Hit '/' or '*' to lower or rise the pitch of two octaves;
       this also alters the MIDI input.

       Playing with a MIDI keyboard
       

        Once you have entered the Tone generator mode, just play !
       The MIDI events supported are:

                         - Note On-Off with velocity
                         - Program change 
                         - Sustain (all channels)
                         - Master volume control (all channels)  

        Hit F12 to leave this mode, '/' or '*' to transpose octave.


       WAV writer
       

        It's very simple, just select this mode and enter any file.
       A WAV file with a name extracted from the initial file will be created
       in the default directory defined in the configuration file MMP.CFG
       (default is 'C:\').
        You can hit 'Enter' to stop the process, the file will be closed
       and truncated to the current size, giving a valid WAV file;
       if you hit 'Esc' the file will be erased.
        Note that the current configuration for the module is loaded
       (e.g the 1-4 tracks one for a 4-tracks module) to create the WAV;
        If you would like to create a high quality WAV because your
       system can't handle many tracks with oversampling and high output
       frequency for example, then you'll have to modify the configuration
       in MMP.CFG before selecting the WAV writer.
        Please note also, that MMP doesn't handle stereo WAV files, and only
       those holding in main memory ... I'll code a direct from disk WAV
       player one day ;)


       Greetings
       

       I wish to thank some nice guys for their advice, remarks, critics,
       bug reports, useful discussions, source code or modules :

        Jean Paul Attard (fr)
        Rodolphe Sepz    (fr)
        Jocelyn Turpault joss@bigfoot.com
        Philippe Lelong  lelong@ens.fr
        Wayne            flay@zip.com.au
        Mervyn Kong      mervynkg@pacific.net.sg
        Toni Lindroos    tonilind@sip.fi
        Bob Appleton     appleton@snoopy.bunt.com
        Jason Cetron     worldofi@aol.com
        Gabriel Ilardi   gilardi@aleph.fi.uba.ar
        MAZ              maz@fh-zwickau.de
                         (don't miss his high quality samples CD-ROM !
                          WAVs and XIs (www.fh-zwickau.de/~maz))
        Brain            brain@eleet.iddc.via.at
        Benzel           maynard@discover-net.net
        David Bolton     BoltonD_at_MET21MF1@ccmail.edu.gov.on.ca
        Adoxa            hoodj@topaz.cqu.edu.au
        VICO             sallem@gamay-gw.iut.univ-lehavre.fr
        Jaime            jaguar@correo.dnet.com.pe
        WarmBooter       WarmBooter@achei.net
        Uhus             uhus@cnit.uniyar.ac.ru

        Special Thanks to

        Aveek Datta      ADatta@ml.org
                         Network Administrator of Monolith
                         who helped me with the configuration of
                         my Unix workstation and registered my domain
                         (cerise.ml.org)
                         If you need a Domain Registration or some other
                         Internet services, try 'www.ml.org'

       Copyright  (the legal stuff)
       

        This program is freeware. This means you can copy it, do whatever
        you want with it(*), as far as no money is involved (except for the
        medium or transfert) and that you copy the files MMP????.ZIP or
        MMP.EXE, MMP_DOC.TXT, MMP_REV.TXT, MMP_NEW.TXT and MMP_FAQ.TXT,
        or transfer them on any server * UNMODIFIED *.
        If you have any doubt about the files integrity, mail me.

        (*)Condition for the distribution of MMP files
        
        (especially on CD-ROMs)


         >> YOU MUST SEND ME A MAIL FOR ACKNOWLEDGMENT <<


         That's useful for at least two points:
         I will know where MMP is distributed AND whether you are about
         to distribute the LAST VERSION of MMP or not (and that's certainly
         not because the last and undistributed version of MMP is ALWAYS on
         my computer ... =)

       Disclaimer (the legal stuff bis)
       

        In no event the Author will be liable for any damages, including any
        lost profits, lost savings or other incidental or consequential
        damages arising out of the use of this program, or for any claim by
        any other party.

         All mentioned Trademarks and Copyrights are registered by their
        respective owners.

        If you don't agree, delete the files and forget MMP ;)


       Who am i ?
       

        I'm 28 and preparing (and finishing ... =) a Ph.D in physics.


       Snail mail
       

        If you want some modules, a new version or anything, send
        FORMATTED 3" disk(s) and enough money or more disks for the
        expenses to :

                      Charles Attard
                      7 rue des plantes
                      44100 NANTES
                      FRANCE

       E-mail
       

             Mail me for any comment, bug report, or anything i can do
             to help you

                          charles.attard@bigfoot.com


C.A. 98/1/25
------------------------------------------------------------------------------
