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