北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北 北盧evisions of the Multi Module Player (C) Charles Attard 1994-1996北北北北 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北 ( @ means internet release - bug fixed + feature added * feature modified) @ 2.606 (5/7/96) First large scale diffusion (on Internet : ftp.cdrom.com /pub/simtelnet/msdos/music ) 2.607 (5/11/96) + Description of error 161 added, appears when a CD-ROM is changed while MMP's reading a list on it 2.610 (5/13/96) + Color selection by keyboard added. Press '1', ... ,'5' to select item, then press 'shift ins' to increment red component 'shift Del' to decrement red component 'shift home' " green " 'shift end' " green " 'shift pg up' " blue " 'shift pg dn' " blue " * palette routines re-coded in asm with direct access to VGA registers, old routines used int 10h that caused system crash while a module was playing 8( 2.612 (5/14/96) * Changed default colors ... i tried a color monitor ;) (not joking, my color monitor burnt out and i had to work some weeks on a monochrome one) I had set the default colors on a color monitor, but when i saw them after some weeks i found them ugly ! * Invalid data for volume slide are now ignored (caused a continuous note in DESIRED.S3M) Data should be exactly 0F or F0 with no "dirty bits" 2.613 (5/16/96) + Added 'N.T.' identifier for some NoiseTracker files 2.615 (5/18/96) + Added deletion capability. Press ctrl-del to delete the file under cursor 2.654 (5/26/96) + XM support beta beta version ;). Module loader loads only one sample per instrument and converts 16bit samples to 8bit Pattern loader-compressor to internal format is OK. Plays XM but there's a HUGE room for improvement, to add in priority : Multi-sample instruments Variable pattern length Volume envelope generator Linear frequency table + Fine tune for XM done on 4bits instead of 8 for now but shouldn't be hearable + Added note shift for XMs. Sounds much better ! - A small but resistant bug squashed. A pattern break to a row>0 could produce an indesirable note. The pointer in memory was updated a row too late It caused an 'additional' note in SANXION.S3M 2.656 (5/27/96) (XM) + Added note off command * 16bit samples parameters now correctly converted but samples remain noisy, there's an undesirable offset on them (that's very annoying : the samples are delta-compressed) 2.658 (6/2/96) (XM) + Note off completed. Note #96 is note off (notes starting @0) * Hey ! Pattern compressor was NOT OK ! The documentation was not very clear : when MSB is not set, should read 5 bytes. Now patterns play correctly ... 2.670 (6/5/96) - Bug that caused invalid offset on samples found (phew ..!) + Number of used instruments and used patterns added in the file information window * Identifier string adapted to XMs and other little things 2.679 (6/8/96) (XM) * Max number of orders and patterns set to 256 + Variable pattern length added - Another bug in pattern loader-compressor found ! Should be the last one (hummm ...), patterns now play great ! 2.682 (6/11/96) (XM) + Max number of instruments set to 128 2.700 (6/13/96) (XM) + Added instrument fading. Seems a bit too fast yet + Beta version of envelope generator (panning generator uses the same algorithm) 2.722 (6/14/96) (XM) * Envelope generator is OK. Sustain and note off are not linked yet 2.731 (6/15/96) (XM) + Set volume command re-added * Instrument fading is OK. It's activated by a note off command * Note off and EG linked. When envelope is disabled, note off cuts the instrument, otherwise sustain is enabled. 2.747 (6/16/96) (XM) + Added volume column commands interpretation - Bug in memory manager fixed (XMS linear mode wasn't enabled when the size of an instrument was over 65000 bytes and when total size was enough to hold the module in conventional memory) - Bug in volume fading fixed. Caused a premature fade-out * Effects manager modified to accept simultaneous effects 2.750 (6/17/96) * Internal changes to minimize code and static data size 2.759 (6/19/96) * More internal changes to minimize static data size 2.772 (6/21/96) * Code and data for XMS segmented mode removed. Wasn't a really useable mode * Error messages adjusted 2.817 (6/22/96) - Error messages for XMS fixed + Multi-sample instruments support for XMs. Total number of samples is limited to 128 * Bug fixes for Multi-sample support (XM) - Bug in sample loader fixed. Size limit was not always considered 2.846 (6/23/96) (XM) + Panning envelope generator added + Sample panning added - Bug in envelope generator algorithm fixed. Last envelope point was not considered - Bugs in panning envelope generator fixed. About signed integers 2.853 (6/24/96) (XM) * Panning display behavior modified 2.857 (6/26/96) (XM) * Volume slide behavior adjusted * Note delay and retrigger fixed (bug recently created) * Checking for invalid sample number in instruments note list added 2.866 (6/27/96) (XM) + File version checking added. Version must be above 1.03 * Effect data restored when zero for some effects * Empty instruments (0 samples) now declared (caused a divide by zero error : sample rate was invalid due to an incorrect sample number. Error found with DAEMON.XM) 2.872 (6/28/96) (XM) + Extra fine porta commands declared 2.907 (6/29/96) (XM) + Linear frequency table implemented and fixed + Fine tune is correctly implemented in linear frequency mode, only on 4bits instead of 8bits in Amiga mode (never used in practice) * Note display adjusted for linear table 2.912 (6/30/96) * Checking for the real number of samples used in an instrument added (XM) - Info menu was not hidden when enter was pressed while a list was playing - Keyboard display was incorrect when very first note was below C-2 or above B-5 2.915 (7/4/96) (XM) - Portamento of volume column was too 'weak', value should have been multiplied by 16 2.922 (7/6/96) - Note display fixed. There was an annoying short display of notes at module start + Added environment string management (MMP=) if this string is present then MMP uses the path to save MMP.CFG and temporary file @LIST, otherwise MMP uses the current path. Thanks to Wayne (flay@zip.com.au) for his remark about this 2.931 (7/7/96) - Bug fix in configuration saving. Short path names can now be saved * Panning display fixed in full mode (bug recently created) - Empty XM patterns now correctly handled 2.940 (7/12/96) * Portamento behavior about note and instrument reset modified, not fixed yet + Global volume slide command added (XM) 2.963 (7/13/96) (XM) + Panning slide, panning slide left and panning slide right commands added + Set volume envelope position command added - Patterns of 256 rows long now correctly read * Now all FastTracker 2.x commands are implemented * To add: Ping-Pong loop and instrument vibrato * To fix: instrument and note reset for portamento (there are subtile differences between S3Ms and XMs) 2.968 (7/16/96) - Bug fixed in file selection. Typing Enter too quicly after a selection (with Enter), could stuck the program in the file selection window even if a module was playing. Had to separate CR and file window call to fix that * Today I have two teeth less (you know, those 'useless' teeth) and I managed to find a bug ! Hope you understand the performance ! 3.005 (7/17/96) * Decreased DOS memory needs for linear frequency table from 24 KB to 3 KB. And those 3 KB are needed only when loading an XM using linear frequency table (almost all) - Bug found in tremor command just reading the code ! Command was only valid on first channel (S3M and XM) * Envelope generators disabled when track is off (XM) * File selection window now stable when F3 is pressed while a module has stopped playing * Objects resize behavior modified. Channels will now self-extend if space on screen is enough + Added help for colors (now two pages) + Added color scheme selection (alt F1, ...) Thanks to Mervyn Kong (mervynkg@pacific.net.sg) for this suggestion - Very little bug fixed in XM loader about fine tune + Added nice color schemes ... * Well, that's enough for today :) 3.010 (7/19/96) - A subtile bug in note delay fixed ('delayed period' was not updated so a forthcoming vibrato would set the previous period instead, and thus 'adding' a note) Thanks to Wayne (flay@zip.com.au) for his remark about this (found with his module WIZBALL.MOD) 3.018 (7/20/96) - Pitch slide up limit was a half tone too low (XM) * some minor changes in portamento algorithm - Display at highest pitch fixed (XM) * some minor changes in volume slide and pitch slide stop condition 3.030 (7/21/96) * Pitch slide commands with data zero removed (MOD). Necessary because XM mode would corrupt MODs playing * Porta speed must be kept appart (tried to remove it) * Note display modified (high pitch) + Added disk error messages from loader unit + More support for some corrupted XM files 3.062 (7/22/96) * Instrument list display adjusted for any number of instruments (especially for S3Ms (100 inst.), XMs (128 inst.) and 669s (64 inst.)) * Pitch slide stop condition modified for 669s + Instrument list size management done (modify, save, self- adjust). Now reading long instrument lists is much more comfortable (8o * Display algorithm fixes 3.065 (7/23/96) * Changes in hardware interrupt handler. Were conflicts with keyboard interrupts (especially the 'shift' key) 3.100 (7/27/96) * File manager improved. Now works in two display modes: 8x8 and 8x16 fonts (perhaps a third mode will come with full module info displayed beside each file name) Module info of file under cursor is displayed (full file name, size and title) * Module type display modified (more simple and clearer) 3.110 (7/28/96) + File manager info line display delayed. Some media being slow (floppies, some CDs ...), it was important to avoid a read at each cursor move 3.114 (7/29/96) * File manager info line management improved (internal) - Bad bug found. Removing a directory which was saved in MMP.CFG and launching MMP would crash it 3.120 (8/3/96) * File manager info line display changed 3.122 (8/4/96) * Bug in compiler caused an erratic display of instrument names (last name was erased after first display). Used string type instead of pointer type 3.135 (8/6/96) * Keyboard management changed (If you want to have fun try finding a hidden command (while a module is playing) ... maybe the most useless thing I've ever coded ;) ) 3.144 (8/10/96) * Miscellaneous compiler routines recoded (readkey, keypressed, delay) * ctrl-c inhibited. Now pressing 'too much' ctrl-c in the file manager won't exit from MMP (!) anymore (it was supposed to solely select drive 'C') * File manager info line delay now correct 3.151 (8/11/96) + Info line delay changeable in the config file MMP.CFG (delay is in timer tick unit, i.e multiply by 0.055 s to have the effective delay. Zero is valid) + File manager mode selectable between 7x16 or 7x37 (columns x rows) * Info line cleared when there isn't any file nor dir in current dir 3.152 (8/14/96) (XM) * Note refresh now disabled when only instrument given (created an awful beep in DEADLOCK.XM) 3.156 (8/15/96) + Added global surround effect (selected with alt-s for now) 3.170 (8/16/96) * Lots of internal changes. Including of most Windos procedures directly under MMP 3.175 (8/17/96) * More internal changes. Some procedures reorganization and optimization * Hardware interrupt manager modified. Now sends a specific end of interrupt command to the PIC, this fixes an IRQ conflict with keyboard which could make the cursor have an erratic movement in the file manager, when a module was playing 3.178 (8/18/96) * Directory read optimized in the file manager, it's faster and more simple 3.215 (8/19/96) * Internal optimizations. Static data reduced (string type optimized) + Added channel number in info line - Bug of cursor position fixed in the file manager (when going down the directory tree, the last cursor position was lost the first time) * Pitch now reset at next row for vibrato and arpeggio effects (was correct in MMP v2.606, but this was necessary due to changes in portamento algorithm) - Bug fixed in frequency table selection: bad offset on flag (XM) 3.240 (8/23/96) * Very high pitch enabled for XMs. Now 10 octaves + Global surround mode saved in MMP.CFG + Dot mode for oscilloscopes. Change done with 'shift o'. Saved in MMP.CFG * Help text modified 3.248 (8/24/96) * Period table now exactly the same as ST3 (to be honest I couldn't hear any difference) * Space after instrument #128 in instrument list now always clean (XM) - Display of instrument numbers > 99 fixed in channels (numbers > 99 are displayed modulo 100 in hilighted color) 3.255 (8/25/96) * XM panning now disabled when panning is disabled - Track mode change would call a global config save instead of a partial config save => Track mode was not saved * The formula given in ST3 doc isn't enough to compute the same note frequency as ST3 (a sample frequency of 8363 Hz gives an output frequency of 8258 Hz). Tried 1691 instead of 1712 as reference period; that's much better but not satisfactory 3.262 (8/26/96) * Pitch reviewed for all types of modules. S3Ms had too 'soft' pitch changes (pitch slide, porta, vibrato ...), this was due to an octave shift for effects (e.g 1712 instead of 856) Bug found with ICE.S3M 3.280 (8/27/96) * Now period calculation is exact for S3Ms (and all mods). Pitch limits for all modules verified. Pitch display adjusted - Initialization bug in tremor command fixed. Tremor should have started with 'off' state (found with ICANFLY.XM) 3.285 (8/28/96) * New algorithm for period calculation in S3Ms fixed 3.306 (8/29/96) * Error management thoroughly recoded. Executable lost 3KB ! + Error messages about DOS heap added 3.313 (8/31/96) * Note max for XMs reset to 119 (DEVLPR94.XM) - Empty patterns at end of order list now correctly handled (FORS.XM) 3.440 (9/1/96) + First version of mouse support 3.470 (9/2/96) * More precise mouse cursor hide to avoid blinking (when cursor is above channels, oscilloscopes etc.) * Mouse cursor video sync disabled in main screen to avoid slowing down of graphics while a cursor move * Some error messages changed + No mouse driver support done + Help windows poped with mouse. Added help button + Skip pattern done with mouse. Click on pattern frame in the status bar 3.512 (9/3/96) + Control of config menu with mouse done * Changes in config save. Now if data are not changed, configuration is not saved anymore (obvious, no ? :) ) * Video sync done before mouse hide, avoids cursor disappearance + Selection of pages with mouse in the file manager or in the instrument list. Click on top or bottom of window's border 3.538 (9/4/96) + Added drive unit and root directory selection in the file manager * Little bugs about cursor move in file manager fixed - Tremolo amplitude was too weak (multiplied by 2) * Surround mode now correct. Should have inverted the samples on only one channel (the left one) 3.610 (9/5/96) + Added two new display modes in the file manager: 1x17 and 1x38 with full module information beside then module name. They're nice modes but the drive accessed MUST have a cache memory - Cursor now correctly placed when then last file of the list is deleted - Management of drive-not-ready state while displaying full module information. If drive is not ready, info line will be blank with only file name + Cache memory algorithm for current directory. VERY useful for CD drives and floppies (and HDs). The buffer memory is ... in the video memory ! (don't be afraid that's unusual but perfectly 'legal', there's no tweak, just consider that the 640x480x256 mode needs only 300KB and any VESA card has at least 512KB of memory (the buffer is 64KB max)) * Some bug fixes about cursor move and data refresh in the file manager + Now reading of files with info line can be cancelled by hitting Esc key. Info line will be blank with only filename displayed. Very useful for slow devices (when loading cache, i.e at first read) 3.642 (9/6/96) - Bug fixes about mouse cursor hide and cursor move + Mouse mickeys changeable in the configuration file - ctrl-del bug fixed. Now file list is reloaded when a file is deleted + Added directory size, free and total space of current drive. Displayed in modes 3 and 4 only * Hidden directories and files not considered any more + Added frequency table type in information window * Added help for mouse commands 3.676 (9/7/96) - Empty samples slots in XMs now discarded (OPLEASUR.XM) - Global surround change now correctly saved in MMP.CFG - Output frequency and mode now changed with mouse ! - Bug of position jump and pattern break on same row fixed (ODE2PTK.MOD) * Number of instruments used fixed for XMs + Added number of samples used (to be exact, this gives the maximum index of samples, plus one, because some instruments can used fewer samples than the maximum sample index; e.g an instrument uses only one sample with index 2, the number showed will be 3 (index begins at 0), not 1) - DOS path of current unit now used when the unit is changed using the cursor * Changes on the 'exit behavior'. The file manager is now the shell, this means that you begin with the file manager and you end with it (not like MMP v2.606 in which the behavior was not totally coherent). At first launch, if Esc (or mouse right button) is pressed then MMP will terminate (this will also be the case if a module has finished); After a module start, pressing Esc (or Enter or any mouse button in an inactive zone) will return to the file manager (and will not exit as in MMP v2.606). To exit from MMP unconditionally, press alt Esc 3.715 (9/8/96) - Datum refreshed for fine volume slide was raw (i.e did not do an 'and 0Fh'). Caused invalid volume change (DESERT2.MOD) Was correct in MMP v2.606 - Instruments with length 0 must be considered in S3Ms ! (LEM-PART.S3M) - Position-jump-and-pattern-break-on-same-row bug NOW fixed ! (ODE2PTK.MOD) - Row search (called by a pattern break) fixed. Current pointer shouldn't have been updated before row end (BACKWARD.S3M and SANXION.S3M) Thanks to Firelight (Brett Paterson, firelght@suburbia.apana.org.au) for his precise informations about this and for his module BACKWARD.S3M * Note discarded when instrument invalid in XMs (OPLEASUR.XM) * Specific behavior of FastTracker's portamento gotten ... If portamento command is present, the latest instrument used must be considered instead of the new one (GEOMANCR.XM) (or in other words, new instrument mustn't be set) 3.744 (9/9/96) * Tempo calculation modified, no round (REJOICE.XM) * Drive space info modified * 'Path not found' message modified -> clearer - Cursor hide bug fixed in the file manager - Bug appearing after a sequence of keys and mouse click fixed (launch MMP - start a module with Enter - call file manager with F3 - exit file manager with right button : this will recall file manager instead of the main screen) - In the file manager, if the number of entries in the directory (including drives, previous and root dir) is equal to the number of displayable files, a ctrl-end would corrupt the file manager - Little display bugs fixed * Instrument reset with portamento fixed (MF_CRETI.XM) * Fine volume slide down fixed (MOOH.XM) 3.750 (9/10/96) * Strange bug was locking MMP while loading SURPRIZE.XM. The heap seemed to be corrupted by a write outside a declared memory area when loading patterns. Added 64 bytes suffix. The reason why there would be such a write isn't clear yet ... perhaps a compiler bug - Cursor movement bug fixed in config menu 3.770 (9/11/96) - Pattern break 'sent' with mouse would disable mouse for one click - Cursor movement in configuration menu changed - Error messages in cascade stoppable with mouse when launching a list 3.800 (9/12/96) + Glissando control added (MF_CRETI.XM) * Structure redesigned for Note delay command which is now correctly implemented, i.e note AND volume AND instrument mustn't be set before delay is reached (this command should have been named 'row delay' instead) 3.818 (9/13/96) - Forgot to consider volume column portamento for instrument reset (MF_CRETI.XM) * File manager modes renumbered * When note off, new instrument mustn't be set * Empty instruments discarding algorithm modified (XM) 3.850 (9/14/96) * Tremolo algorithm now exact (SCAMEL.S3M). * Vibrato and Tremolo position reset at module start ! * Data zero is differently interpreted for S3Ms and for XMs or MODs: in S3M mode, last valid data is used even if the command wasn't a vibrato or tremolo, in XM mode, the last value for vibrato or tremolo ONLY is used. * ST3 sets tremolo speed even if it's zero, FT2 and PT don't. ST3, FT2 and PT set vibrato speed only if non zero * ST3 uses a 'center' volume value for tremolo which is set only when the volume is changed with a new instrument or a volume data 3.856 (9/15/96) - Mouse commands fixed when playing a list 3.860 (9/17/96) - Any note delay or note cut reaching next row discarded (SOUNDOSA.XM) 3.880 (9/18/96) - Note delay fixed - Display fixed when the number of entries in file manager is an integral number of displayable files - Invalid instruments discarded (SNOWD.S3M), instrument type must be tested to do so - Little cursor display bug fixed (modes 3 and 4) 3.884 (9/19/96) * Default configuration modified 3.902 (9/20/96) + Objects movement with mouse ! (that's 'lift-and-drop') + Configuration saving disabling or enabling done by clicking on title bar 3.932 (9/21/96) * Movement cursor changed a little * Movement mode disabled when file manager displayed * Mouse window adjusted for the two cursor shapes + Added temporary full screen instrument list, type 'alt-i' or click 'Inst.' button in menu with right mouse button 3.942 (9/22/96) * Little mouse management bugs fixed * Specific data when data zero for portamento and vibrato or tremolo must be used, not previous data (BACKWARD.S3M) * Arpeggio for S3Ms has now a specific command number (not 0) 3.955 (9/26/96) * Management of length zero samples done (TOOHIGH.XM) * Sample offset limited to the end of sample or end of loop * Special portamento case done (continue porta after a pitch slide) (HEIT.XM) 3.960 (9/27/96) - Mouse cursor not displayed any more at each module load in list playing mode - With no mouse driver present and an error message appeared the user couldn't get back control @ 3.960 (9/27/96) Second release on Internet, the primary FTP server is ftp.cdrom.com, the complete path to MMP is ftp://ftp.cdrom.com/pub/demos/incoming/programs/mmp3960.zip or, if moved ftp://ftp.cdrom.com/pub/demos/music/programs/players/mmp3960.zip @ 3.962 (9/28/96) - OOps ! porta bug found Portamento restarted (with no note and no instrument) only if it was on or stopped by a pitch slide (CAPRI.S3M and some others) 3.966 (10/12/96) - Note off bug on track 0 for XMs. Volume now set to 0 (STARFALL.XM) - Forgot to remove test mixing routine (DOS mode, stereo, LDI) ! (wasn't hearable I think ...) * Jumps optimized in interpolated stereo mixing routines 3.972 (10/13/96) * Global volume change suspended until a new note occurs (S3Ms) * Pattern break ignored in S3Ms if present in last pattern, makes the song loop in MODs and XMs * Dummy patterns (patterns declared only in order list) now supported in S3Ms 3.976 (10/14/96) * A global volume must be set for each track ! (strange ...) New global volume for the current track is set when a new note comes (WDFIL.S3M) 3.978 (10/17/96) - Directory names with extension now displayed correctly 3.979 (10/20/96) - Now a file is considered as a list file only if the FIRST character is '@' 3.980 (10/21/96) * Identifier 'M!K!' is for 8 channels MODs, not 4 + Added 'EXO4' and 'EXO8' identifiers for MODs @ 3.980 (10/22/96) Third release on Internet 3.982 (10/23/96) * When a module has finished playing or at first launch, clicking the right mouse button won't exit MMP anymore @ 3.985 (11/7/96) * At least ... a reliable e-mail address 'charles@cerise.ml.org' It was really painful to connect in Belgium to send and receive mails (8(