Muse/2 V1.0 a Os/2 Digital Module Player October 1995 This program is freeware, meaning it can be freely distrbuted so long as no files are removed and none of the included files are altered in any way. Modules ~~~~~~~ A Module, in this sense, is a music file format that stores both digital instruments and note information. Unlike MIDI files which are soly note information and WAV files which are a single digital instrument. Modules use a technique known as Wave Table Synthesis or Digital Mixing for play back. A more advanced, but similar system is used in most of today's synthesisers. The result is a reproduction identical to what the origial author intended and unlike a digitial recording the size does not grow very large for long songs. A 30 minute song could easialy be a mear 300k. Almost all of the space in a module file is used by the instruments. Instruments in a module are fairly simple, an attack portion which is used to simulate the striking of the instrument the sustain portion which is used to simulate the way the instrument sounds if it is continuously played and in some formats the decay portion which simulates the relase sound. On a guitar each portion could sound similar to the following: Attack - the fingers striking the strings Sustain - The free vibration of the strings Decay - the hand hitting the strings to stop the vibration The note infomation is organized into channels, each channel can play 1 note at a time, so the more channels the more notes you can have at once. Unlike MIDI files which are played in hardware (ie with the FM chip on your Sound Blaster) S3M files are played in software. The DAC (digital to analog converter) on your sound board is used to play digital data which is synthesised by the program. Some cards, like the Gravis UltraSound (GUS), have a specialized chip onboard which does this same process, but in hardware. Since the CPU must be used to generate the data to be played, time is taken away from other programs in the system. OS/2's multitasking allows you to do other things while the song is playing, your system will seem slightly slower, that is because data is being streamed to the sound card at 44k/s (for 22kHz 8bit playback) and several threads are running to manage this transfer. Since the synthesis method basically generates the equivilant of a WAV file, it has many characteristics of a WAV file, like Sampling Rate and bit rate. Sampling rate and bit rate combine to determine how good the resulting sound will be. CD's use a Sampling rate of 44KHz and a bit rate of 16 bits, this is considered sufficiant to reproduce a wide range of sound with good accuracy. There are many different formats for modules, a quick list: MOD - Original format, from the amiga which had a hardware chip to do the synthesis. Many different formats for mods exist, ranging from 4 to 8 channels S2M - Early predecessor to S3Ms, 4 channels, but several enhancements on the MOD idea MTM - A refinement on mods, 32 channels and 16 bit samples are added S3M - A format that doesn't look very much like a mod (internally) but works in much the same manner. Typicaly called Scream Tracker files. 16 channels XM - I don't know much about these but from the spec they look VERY good, things like volume envolopes and more commands are in this format. Currently Muse/2 only supports S3M's. Some good FTP sites for S3M's are: kosmic.wit.com /kosmic/songs ftp.cdrom.com /demos/music/songs/199?/S3M /demos/music/disks -- Note, many other file formats are on those sites, make sure you get .s3m files (often zipped) If you don't have any, I recommend the following songs to get a good feel of what S3Ms are. Light techno style of music, excellent samples and fairly long songs: ftp://kosmic.wit.com/kosmic/songs/95/k_macro.zip (241k) ftp://kosmic.wit.com/kosmic/songs/95/k_2deep.zip (183k) ftp://ftp.cdrom.com/demos/music/songs/1995/s3m/t/tlgrea.zip (303k) Folk type of music ftp://ftp.cdrom.com/demos/music/disks/1995/l/legacy.zip (1.4 Meg, Many songs) Music Disk from Neophyte widely varied. ftp://ftp.cdrom.com/demos/music/disks/1995/f/f10_pck5.zip (1.7 Meg, Many songs) ftp://ftp.cdrom.com/demos/music/disks/1995/f/f10_pck6.zip (1.9 Meg, Many songs) Music Disk from Force Ten, contains rock and jazz styles of music Muse/2 ~~~~~~ Muse/2 is the first released OS/2 S3M player, it first appeared in the Ethos Peripheral Evolution Demo, and had been in beta for at least 2 months before. Because it was originaly used in a Graphics/Sound demo, the goal in creating this player was to make is use the smallest amount of CPU power possible, and so far that goal has been achived! On my 486dx50 memsize's CPU load monitor will register the CPU load as being 18% to 30% (it varies as the song playes) for 22kHz 8Bit playback. -- Note to Pentium Users, Muse/2 has not been optimized for the Pentium (Compiler is being annoying) and will not run at the maximum possible speed. When I can get Pentium optimizations working a fix will be placed on hobbes, should be 1.5 to 2 times as fast. Installing Installing Muse/2 is simple, place all of the files in this archive into a directory. If you use it alot then point your LIBPATH and PATH to that directory. All of the DLL's must reside in the same location as the EXE. You can then test the installation by typing 'mus2tiny -V' Eg: (Version numbers may vary) c:\Muse!2> muse2tiny -V Muse/2 Background User Interface V1.0b Culus of Ethos Loading Components. Version Information: File Formats: Scream Tracker 3 Module (museS3MFormat) is Version 1.0 Output Methods: MMPM/2 Digital Mixer (museDACMMPM2) is Version 1.0 c:\Muse!2> There must be at least one Output Method and one File Format. Included with this package are the S3M File Format and the MMPM/2 output method. Playing Songs To play a single file type 'mus2tiny mysong.s3m', but replace mysong.s3m with the file you wish to play :> Wild cards are accepted, along with list files, for instance c:\> muse2tiny *.s3m @favsongs Will play all of the S3M's in the current directory and all the files listed in favsongs, also in the current directory. A list file should have exactly 1 song per line ie: Song1.s3m Song2.s3m Song3.s3m List files can included paths as well. The UI The user interface is very simple, press 'H' for a description of all of the keys. ESC will exit the player The default display is the instruments screen which shows the names of all of the instruments in the song, often authors write messages in the instrument names. Up and Down on the cursor pad will scroll the list. [ and ] will change to the next/last song in the song list, while 1-9 will change to that song in the list, ie '1' is the first song, '2' is the second etc.. Notes about the Components ~~~~~ ~~~~~ ~~~ ~~~~~~~~~~ S3M Format This S3M player supports all of the normal S3M commands excluding Arpeggio (J), Set FineTune (S2x), and pattern loop (SBx). It does support the DMP panning command, which includes surround sound mode! If you don't have a surround sound setup you should disable surround sound mode, or surround channels may sound incorrect. Digital Mixer The Digital Mixer supports varying playback frequencies as well as surround sound and 16 bit output. The best sound quality can be achived with this command line option: -o"44k -6" or if you don't have surround sound -o"44k -s6" The lowest CPU usage is -o22k or if you don't have surround sound -o"22k -s" The default is 8 bit 22k with surround sound enabled. If you don't have a stereo sound card this mixer will not work. MMPM/2 MMPM/2 based output does not support the pause command. Since it does not use IBM's new DART system all of the UI commands will take a few moments to come into effect. This is due to the non realtime nature of the MMPM/2 system. While you are waiting for a command to change the ouput you can still continue to use other commands. Ie hit [ many times to advance many songs, the line at the top will display the current song and when the song is finally loaded the rest of the information will be filled in. Tiny UI Designed to use very little processor power while still displaying something usefull. It doesn't have any neato real time tracking or scopes. It is possible to run it in detached mode, ie: c:\Muse!2> detach mus2tiny mysong.s3m In which case you will be unable to control it. Programming Info ~~~~~~~~~~~ ~~~~ Muse/2 is unique in the ability to allow other programmers to extend it's basic functionality through the use of inheritance. This is similar to the Work Place Shell. However, since I have not yet had the time to produce suitable documentation I have not included the required header files. If you are interested in using Muse/2 in some product then email me and I'll see what I can do. For those who care, Muse/2 can function as a dynamic Nth channel mixer for sound effects, while still playing music files. However DART support is needed, should arrive soon if there is intrest. (This is similar to the rumored Oasis RealTime Nth Channel mixer, except Muse/2 will allow a S3M to be played along with the SFX) It is also possible to add new file formats and output methods, ie GUS support, or MOD's. Again, email me if interested. Ethos ~~~~~ Ethos is a fairly young Os/2 demo group. This player first appeared in our Peripheral Evolution Graphics/Sound demo (pe_ethos.zip). Our member list changes alot, but at the moment it includes: Culus, Sane, Sophisto, Raethma, Wizdom, Daedalus and Zapper We are pondering doing another demo, but our graphics coder is gone, so it's not too likely :< Final Note ~~~~~ ~~~~ I'm not sure if I will continue to develope this program, if there is sufficient intrest I probably will. I have been thinking of releasing the IDL files, which would allow anyone to make use of the player, in any program. But they are useless without some documentation which I don't really have the time to write. However, if there is interest I could probably scrounge something together. EMail me if you'd like to use it in something, or would like like to extend it with new file formats, better UI, whatever. It can all be done, it's quite flexable. Comments, Critisims, Bugs etc welcome at gunthorg@cuug.ab.ca, please put Muse/2 somewere in the subject line. I suppose it's worth pointing out that if I don't get any email's, very little will happen. If you find a bug send it in, if it's really a bug you get on my beta list! :> I can also be found on IRC in the #Os/2 channel. Big thanks to the beta testers: Nightboob Wizdom Agent Hiro Raethma Roberte Sophisto Sane Malakai TNSLB darb __NS__ Greets to! AFMOS [Stang] madbrain dandaman Vip MaxMars Stiltner Force Ten Neophyte Highlandr All the beta testers and Ethos members, Sander van Leeuwen and The #os/2 channel! Future Directions ~~~~~~ ~~~~~~~~~~ MTM, MOD DART Support GUS Support Culus of Ethos