MUSIC MODULE COMPRESSOR
                                 version  1.34
                      
                                 User's Manual



Table of contents:


        1. Introduction
        2. Information on MMCMP:
          2.1.  Requirements
          2.2.  Files in this packages      
          2.3.  Features of this version
        3. Usage:
          3.1.  Compressing files
          3.2.  Decompressing files
          3.3.  Using MMTSR
            3.3.1. Loading MMTSR
            3.3.2. Enabling/Disabling
            3.3.3. Removing MMTSR from memory
            3.3.4. More about MMTSR
        4. Some legal stuff...
        5. Contacting the author
        6. Where to get the latest release?
        7. Closing words


        <See MMUPDATE.DOC for the latest implementations!>



1. Introduction


        As music modules and samples are constantly growing larger and 
        larger, it is essential to be able to compress those files to save
        space on disk. However, files compressed using "standard" compression
        utilities may be understood only by a few players and can't usually be
        loaded into any conventionnal tracker for editing and composing.  But 
        now, MMCMP offers you the possibility to do so.


        MMCMP, Music Module Compressor, is a conventionnal compression utility 
        that compresses music files, giving approximatively the same ratio you 
        could expect with any popular compression utility.  It is not some kind 
        of special sound compression like MPEG2, for example, which may give a 
        very gound compression ratio, but modifies the data and tends to lower 
        sound quality.  MMCMP does not modify the original sound data, and 
        decompressing a compressed file (using MMUNCMP) gives back the 
        original, unmodified data.

        
        Its name may suggest that it only compress "modules".  In fact, this is
        what it was intended for at first.  However, as MMCMP was developping,
        it became more flexible and could accept practically any file format.
        Thus, since "instruments" file size has almost increase tenfold over 
        the last years, it was now more than useful to have some way to  
        compress them and still have access to them anytime.  Actually, almost 
        every new version of MMCMP brings support for new sound files formats!


        "Have access to them anytime."  What does this really means?  What's 
        special about MMCMP is the small TSR (Terminate and Stay Resident) 
        utility (MMTSR.COM) which, once loaded, will decompress the module in 
        the "background" when they are loaded by *ANY* player or tracker.  So 
        you DON'T NEED TO DECOMPRESS MODULES OR SAMPLES TO PLAY THEM BACK AND 
        USE THEM! However, due to technical reasons, MMTSR can't compress 
        modules when, within a tracker, you save a module back on disk. You'll 
        have to do this "manually" with MMCMP.


        Fortunately, this shall be soon possible, as I'm currently working
        with Jeffrey Lim, the author of *Impulse Tracker*, so that IT will
        include compression/decompression routines.  A few trackers already
        use some kind of sample compression, but as far that I know, this
        shall be the first tracker (I guess) with such a reasonable
        compression (ratio approximatively equal to ZIP, ARJ, LZH, etc.. and
        twice or thrice faster!)





2. Information on MMCMP


  2.1. Requirements:


        - A 80386 based or better computer (does anybody still have something
          worse????)
        - around 300k of free conventionnal memory (MMCMP/MMUNCMP)
        - 64 k of free exTended memory OR 64k of free exPanded memory (for
          MMTSR only)
        - some free space on your drive C: (for MMTSR only) to uncompress a
          file (the size of a big module is enough...)


        These requirements may change with future version of the program.
        See the "Features" section below and the MMUPDATE.DOC file.


  2.2. Files in this package:


        You should have all of the following files:


        MMCMP.EXE       The compression utility
        MMUNCMP.EXE     The decompression utility
        MMTSR.COM       The TSR version of MMUNCMP
        MMCMP.TXT       The MMCMP manual (this file...)
        MMTSR.TXT       Technical information on MMTSR
        MMUPDATE.TXT    Information on previous, current and future releases
        FILE_ID.DIZ     Small description for BBS


        If there's more files, don't worry, but if some of those files are
        missing, please try to find an "original" version so you may benefit of
        everything MMCMP has to offer you!  See Section 6. Where to get the
        latest release?

        If you wish to distribute MMCMP, see Section 4. Some legal stuff...


  2.3. Features of this version


        MMCMP can actually compress modules of the following formats and
        will support everything supported by the specified tracker version:
         - S3M: Scream Tracker 3 module (ST3 version 3.21)
                (adlib samples not supported (who cares.:]) but MMCMP supports
                16 bits samples even if ST3 doesn't)
         - IT:  Impulse Tracker module (IT version 2.03)
         - XM:  Extended Module (Fast Tracker 2.06)
         - MOD: Amiga MOD format (made with any good MOD tracker, except old
                MODs with only 15 instruments, they are not supported yet)

        MMCMP also handles samples files of the following formats...

         - DigiPlayer / Scream Tracker 3 Sample file (often refered as S3I or
           SMP)
         - Impulse Tracker samples.
         - WAV: 'Conventionnal' WAV files.  WAV format being very flexible, 
                files may sometimes contain unsupported data (names, samples
                lists, cue points, etc...).  It should not cause any problem
                if you try yo compress such files, but you probably won't get
                an optimal compression ratio.

        ...as well as instrument files:

         - XI:  Fast Tracker 2 Extended Instrument

        Thracker versions are the latest version of those trackers with which
        MMCMP has been tested.  Of course, MMCMP may work correctly with a 
        module made with newer versions of those trackers as long as modules 
        don't hold newly implemented features, but it is possible that MMCMP 
        may incorrectly handle the features that are "currently unsupported" 
        by those trackers. Note that a lot of other file formats (notably IFF, 
        PAT, and others) shall be implemented SOON!  (at least, when I'll find
        documentation!)


        Actually, MMCMP supports only 8/16 bits mono compression.  This doesn't
        mean much though, because data like patterns, which aren't samples, are
        compressed too, exactly like samples.  It only means that, for example,
        stereo samples will soon have their own compression scheme so they can
        be compressed much better.  However, among currently supported module
        formats, none of their respective trackers actually support stereo
        samples, so stereo support won't be implemented until necessary...

        NOTE:   If you happen to have descriptions of different file formats
                headers (especially .PAT and .IFF) and are willing to give 
                them to me, please do it!!  You'll get at least the honor to 
                be within theses docs, and probably more...
                See section 5: Contacting the author, below in this file!!




3. Usage


  3.1. Compressing Files


        To compress a module, simply type at the prompt:


                         MMCMP filename [filename] [filename]...


        "filename" may include a drive letter, a full path, as well as '*'
        and '?' wildcards.  You may also specify more than one filename. The
        file extension must be specified.  Omitting filename will show the
        previous command line syntax.  If you wish to interrupt the process,
        press the ESC key during compression, and MMCMP will stop right after 
        compression is done on the currently processed file. You may also press
        Ctrl-Break or Ctrl-C, which may abort compression instantly, but MMCMP
        won't be able to remove temporary files.  It is therefore recommended 
        to press ESC.

          * *IMPORTANT NOTE:* *


    =>> MMCMP WILL REPLACE THE ORIGINAL FILE with the compressed one unless an
        error occured during the process.  The new file will then have the same
        name, date and time, than the original one.  If an error occured while
        compressing, the file will remain unchanged.  If your file is "read
        only", MMCMP won't be able to replace it and will save the compressed 
        file in a temporary file, giving you the name of this file.


  3.2. Decompressing Files


        To decompress a file, type at the prompt:


                MMUNCMP filename [filename] [...]


        The syntax follows the same rules as for MMCMP, explained above, and
        decompression process may be interrupted the same way. Note that 
        MMUNCMP, like MMCMP will replace the compressed file by the 
        uncompressed one.  It will also behave like MMCMP if an error occurs,
 
 
  3.3. Using MMTSR


    3.3.1. Loading MMTSR:


        MMTSR is loaded by typing "MMTSR" at the prompt.  It will allocate
        64k of exPanded memory -OR- 64k of exTended memory (this amount shall
        be configurable in future versions of MMTSR) and takes 2.5k of
        conventionnal memory for itself.  By default, MMTSR only uses expanded
        memory, but if you don't have expanded memory or you want to use
        extended memory, you MUST specify it on the command line:


              > MMTSR xms


        Load it "high" if you can, by typing "lh mmstr" at the prompt,
        so it doesn't use "low" memory used by most DOS applications.  Once it 
        is resident in memory, it will systematically decompress any file it 
        recognize as a MMCMP-style compressed files. Technically speaking, 
        every file BEGINNING with the "ziRCONia" signature WILL be 
        decompressed.


    3.3.2. Enabling/Disabling:


        MMTSR may be enabled/disabled anytime if you think it interferes with
        something else in your system.  To desactivate MMTSR, simply type
        "MMTSR off" and to reactivate it, type "MMTSR on" at the command 
        prompt.


    3.3.3. Removing MMTSR from memory:


        Furthermore, if you want to free all the memory it uses, you may remove
        it from memory by tying "MMTSR rem".  However, if another utility is
        running of other TSR (Terminate and Stay Resident programs) are 
        installed after MMTSR, it may be impossible for MMTSR to remove itself 
        from memory, because other programs in memory may become corrupted.
        One way to resolve this problem is to load MMTSR after every other TSR.


    3.3.4. More about MMTSR....


        When decompressing a files, MMTSR creates a tempory file in the root
        directory of drive C: (C:\_~zirc~_.tmp, but this shall be configurable
        in future versions of MMTSR)  This means that it will most probably
        don't work correctly if some program opens more than one compressed
        file at once, or if there's not enough free space on the C: drive to
        store the decompressed file.  Of course, a player may load more than
        one file into memory, as long as a compressed file is not opened before
        the previous one is closed first.  Usually, trackers and players don't
        open more than one module or sample at once.


        Furthermore, since every compressed file is decompressed when it is
        opened, program that scan every files to get their name, info, etc,
        may be consequently slowed down during scanning if that program
        doesn't explicitely support compressed files.  As for now, only
        Impulse Tracker recognize the 'header' part of compressed files and
        may thus scan file as fast as if they were not compressed.


        If music is playing while a file is being decompressed, some weird
        things might occur with the playback, only during decompression,
        depending on the player/tracker you are using.  But don't worry, it
        shouldn't hurt ;)  This is only due to the way the computer processes
        "background events", i.e, most of the time, decompressing file in
        "background" and playing music in background can't be done at the same
        time.  Under certain circumstances, MMTSR will let the music playback
        continue normally, but sometimes playback is slowed down, or paused.
        This really depends on your player or tracker.



        IMPORTANT:


        MMTSR performs a READ ONLY decompression, i.e. any program, player,
        tracker, may read any compressed module, but attempting to write into
        a compressed file WHILE it is STILL open will return an error to the
        program that attempted to write, like if it was a read-only file.  This
        prevents corruption of the compressed file since the player/tracker
        sees the file as a non-compressed file.  However, since players don't
        write into those files and trackers usually rewrite the whole 
        file, there won't be any problem.


        Frthermore, using MMTSR to load modules or samples which have been
        compressed using a newer version of MMCMP (with new compression scheme,
        i.e only adding new module format or that sort of thing doesn't change 
        anything here) may crash your computer. It doesn't do anything bad,
        but you'll have to reboot your system. It might also not crash,
        instead it will only load data in a wrong manner, and results are much
        unpredictable (for example, a sample could sound like garbage). But if
        you don't save and overwrite your file after it has been altered in
        some ways, DATA CAN'T BE MODIFIED and will remain like it was before.
        Simply use MMUNCMP to decompress it correctly.


        This is all because MMTSR, being resident in memory and working in the
        "background", can't interact with the user if something is wrong.
        Thus, to keep MMTSR as small as possible so it doesn't take too much
        memory, no check or verification is done for newly implemented
        features, not supported by the current verion of MMTSR. MMTSR may also 
        simply refuse to decompress a file if it can't "understand" it.  
        Consequently, you should always use the latest version of MMTSR you 
        own.


        A lot of work has to be done around MMTSR to improve it, and a setup
        utility will probably be released soon to let the user configure
        MMTSR (temporary file path, extended/expanded memory support,
        etc..)  Check the file MMUPDATE.DOC, and for technical stuff about
        MMTSR, see MMTSR.DOC





4. Some legal stuff


I CAN'T BE HELD RESPONSIBLE FOR ANYTHING THAT COULD HAPPEN TO YOU, YOUR
MACHINE, OR WHOEVER OR WHATEVER, RESULTING FROM ANY USE OF THIS SOFTWARE.  BY
USING THIS SOFTWARE, YOU ARE AUTOMATICALLY ACCEPTING THIS, AS WELL AS THE
FOLLOWING PARAGRAPH:
 

THIS SOFTWARE IS PROTECTED BY THE RIGHTS OF INTELLECTUAL PROPERTY. YOU MAY NOT
MODIFY ANY PART OF THIS SOFTWARE, NOR YOU MAY ADD OR REMOVE ANYTHING TO OR FROM
ANY OF ITS FILES. IF YOU'RE NOT A DISTRIBUTOR, YOU MAY HOWEVER FREELY
DISTRIBUTE AND COPY IT, AS LONG AS ALL FILES ARE PACKAGED OR ARCHIVED
TOGETHER AND NO FILE IS MODIFIED OR REMOVED.  YOU MAY ARCHIVE OTHER FILES WITH
THIS SOFTWARE FOR ADVERTISING PURPOSE ONLY, BUT THIS SOFTWARE MUST NOT BE
INVOLVED IN ANY WAYS IN THIS ADVERTISING NOR RELATED TO ANY OTHER PRODUCT
WITHOUT MY CONSENT. YOU MAY NOT CHARGE ANYTHING FOR THIS SOFTWARE OR PARTS OF
IT.  DISTRIBUTORS WHO ARE INTERESTED IN THIS SOFTWARE OR ANYBODY ELSE WHO
WISHES TO MAKE COMMERCIAL USE OF IT OR PARTS OF IT MUST GET MY WRITTEN CONSENT
FIRST.


        If you wish to copy it, please archive or compress files under the
        following filename:
                MMCMPxyy.eee

        Where 'x' and 'yy' are the version number (x.yy).  For Beta releases,
        use "MMCPxyyB.eee". 'eee' is simply the extension added by the 
        archiver (like .ZIP). Since there's some work being done between 
        Jeffrey Lim, the author of Impulse Tracker, and me, you may also 
        distribute MMCMP files along with Impulse Tracker.




5. Contacting the author


        If you wish to ask, suggest, or report something, or for any other 
        comment, contact me...


        ... via e-mail:
                giassone@ift.ulaval.ca
            OR  Emmanuel.Giasson@ift.ulaval.ca (same thing...)

                Subject: MMCMP    (or whatever else you want...)
 
                (I shall have this mail account up to april '98, and maybe
                more...)


        ... via snail mail:
                Emmanuel Giasson
                158, rue Gariepy
                St-Redempteur, Quebec
                G6K 1M5
                Canada


                (this shall also still be good for a couple of years...)


        ... via IRC ;)
                though this 'may' not be very serious, if you happen to be on
                the same 'IRC net' (don't really know its name...) look for
                the nickname 'Zirconia', often on channel #bistro (well, as for
                now...).  Try between 7pm and 2am, "Eastern North American" 
                time (-5h00 or -4h00 GMT)


        If you are reporting bugs to me, please, try to be as explicit as
        possible!  If you wish to use my compression algorithm, ask me first,
        but if you only want to get the algorithm to decompress data (well,
        this may seems to be the same thing, but in fact, this is much
        simpler) you may ask me (because I haven't yet included it along with
        the software) or wait until it is integrated to IT.  The decompression
        algorithm might be there for anybody (i.e. players/trackers
        programmers) who would like to add support for compressed IT modules.




6. Where to get the latest release?


        On Internet:
        
            The best place to find MMCMP is on ftp://ftp.cdrom.com, under
            the directory pub/demos/incoming/music/programs.  This is where
            I upload every new version of MMCMP.

            NOTE: If you know about any other site that would be suitable for
                  this kind of utility, please tell me, and I shall make a list
                  of upload sites, thus giving easier and faster acces to many 
                  people!




7. Closing words


        I'm sorry if this doc contains errors or some information is missing...
        please contact me if you wish to notify anything about it.


        I personally conceived the compression algorithm two or three years
        ago and after writing three very different versions of my program
        (the third is the good one) here it is! But I haven't been really
        alone, I'd like to thank:


        Jeffrey Lim: For spending a lot of time trying to fix bugs in his
                     tracker, while bugs were within my program, (dear
                     MMTSR...:] )  Also helped me to spread my program all over
                     the world by putting my program along with his tracker
                     (*Impulse Tracker* of course...) Also did a LOT of
                     beta testing.  Thanks a lot!!


        Robert Pouliot (Krynos):
                        Told me a simple way to make MMTSR removable, from
                        which my 'remove' code was much inspired.  And thanks 
                        for bugs report!


        Beta Testers:   Nicolas Szapiel (Moonbeam / )
                        Nicolas Roberge (Populous / )
                        Samuel Cote (Balrog / KFMF)
                        Dominic (Mammouth)


        And anyone else who uses my program, and all those who are sending me
        comments, info, questions, bugs reports (...shouldn't happen ;]) !!

        
    --> MMCMP is more a "freeware" than a "shareware" program: there's no 
        registered version, with enhanced features, for which you must pay 
        after a trail period.  However, after using it for a while, you MAY pay 
        for it.  How much?  Well, I'll let you judge by yourself... Let me say 
        it will encourage me a LOT to spend time on MMCMP and to continue 
        developping new features.
        
        I've spent many many many hours to conceive, code and debug this 
        utility, and I'm still working on it... but this software is meant to 
        please the whole planet!  However, if feel happy and generous, and if 
        people around you feel the same way, get together to form an happy and 
        generous group!  I know an university student who works hard to pay his
        school fees that would be very happy to receive a little something in a
        little envelope in his little snail-mail box :-)  I will also write 
        your your name/nick or whatever you want (simply specify it) into a 
        "very kind people" list!  (By the way, why isn't there such a list 
        yet???)  And if you have an e-mail accout, I'll send you personnaly 
        every release of my software.  So... open your mind, feel the generous 
        person within you,  and... ;)


        Finally...


        As I said in the intro, my compression algorithm shall be soon
        integrated to Impulse Tracker, so watch this out!!! 


DON'T FORGET TO LOOK THE MMUPDATE.DOC FILE!!!!!


Enjoy!


Zirconia a.k.a Emmanuel Giasson