北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北 北盧evisions of the Multi Module Player (C) Charles Attard 1994-1998北北北北 北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北北 ( @ 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/music/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.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( 3.996 (11/11/96) (XM) - No check for negative volume with retrigger (a negative volume would reset the volume to the maximum) Thanks to Gabriel Ilardi (gilardi@aleph.fi.uba.ar) for his remarks and report of following bugs: * Pattern loop effect modified. A loop end without loop begin must be played (effect E6x) - Panning wasn't available for the right channel (effect 8xx) * Initialization bug in FastTracker about multi-retrig effect reproduced (effect Rxy) 4.002 (11/12/96) * Pattern loop modified for S3Ms too @ 4.012 (11/14/96) - Bug in sample decompressor (XM samples of size 0) could crash MMP ! * Single retrig effect (E9x) modified and debugged for XMs 4.019 (11/17/96) * Pattern break modified. A PB on last order should loop the module (BACKWARD.S3M), bug re-fixed * Instrument reset re-modified for non-XMs. When a portamento and a different instrument are set, no new note must be set (3EDGES.MOD) 4.022 (11/18/96) - Pitch slide with data zero cancelled for MTMs (CLOSER-1.MTM) 4.025 (11/20/96) - Bug in interrupt handler concerning IRQ 10. PIC#2 must receive a specific EOI command for IRQ value minus 8 and PIC#1 must receive a specific EOI command for IRQ 2. I could have sent a non specific EOI but it seems to be the cause of conflict with keyboard interrupts. Thanks to Maz (maz@fh-zwickau.de) for this bug report 4.042 (11/22/96) - SB Pro support re-fixed 4.044 (11/29/96) - Error message fixed for very truncated files 4.052 (12/6/96) + Position path of MMP.EXE used by default if environment string MMP is absent. Big thanks to Brain (brain@eleet.iddc.via.at) for his sample source code and advice about this. @ 4.072 (12/11/96) * XMS 32 bits is now the default mode. MMP tests the availability of the memory types in the following order: XMS 32 bits - EMS - DOS + DOS shell ! (enter 'd' when a module is playing) Thanks to Kent Briggs for his work about heap management (heap_shrink and heap_expand) 4.092 (12/14/96) + V86 mode displayed if enabled (next to Mode in config). This will show you why DOS or DOS/EMS mode are used instead of XMS 32-bit linear mode. To be clear, I insist: XMS 32-bit linear mode can not be used if CPU is in V86 mode (that's to say QEMM, EMM386, or windows DOS box is active) - Very old bug fixed about spectrums display. Now changing FFT size ('comp.') will change the effective pitch (and resolution) displayed ! * Change FFT default values to Displayed 7 (128), Computed 9 (512) * Previous directory '..' always set (except when on root !) because it's not always reported by a DOS call on some networks. Thanks to Brain for this bug report - Pattern-loop start row must be row zero if loop end is defined before loop start (ARMANI.S3M) 4.101 (12/16/96) * Directory not systematically reloaded when displaying file manager: very useful for slow drives with no cache (especially when reading archives) * Archive reader and unarchiver management almost completely debugged, this feature will be activated very soon ! 4.112 (12/17/96) + (Better) compatibility with Windows 95. Now the presence of the environment string 'windir' is tested before V86 mode to avoid a protection fault. Moreover, when windows is detected the sequence for memory detection is DOS - EMS because EMS is AWFULLY slow under windows: a P100 can keep up, but not more, reading a 4-track mod ! 4.132 (12/18/96) - 'Nice' little bug in XMS memory detection: routine couldn't allocate memory if a system had more than 32 MB of ram ... changed integer-16 to word-16 ! Thanks to MAZ for this bug report * Changed exit command. Now alt-esc and new command alt-x always immediatly exit, i.e even if a window is active. Adding alt-x command was necessary because windows locks alt-esc command for its own purposes ! 4.165 (12/22/96) + Archives display and management activated ! List playing needs fixes ... + Added Master Volume control (enter '-' or '+') - Extra patterns in S3Ms could lock MMP ! (patterns which are present in the order list but are not saved in the file) Now correctly managed (RENDEZV4.S3M) * List playing with archives done * Archive management seems OK ... * Error message if extraction failed added Extraction can fail if: - 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 - there's no path to the unarchiver Note: file names with path recorded won't be extracted (e.g 'MODS/GOODMOD.S3M') 4.171 (12/23/96) * Directory tree 'follower' reset when directory reloaded(F5). The cursor could be set to a position where there isn't any file after CD-ROM change * Dir size now zero if archives are present with no modules inside 4.183 (12/27/96) * Added alt-x command (immediate exit) in file manager + Added fade out delay. This avoids ultra-clicks when quickly trying modules. Delay can be modified in MMP.CFG, the total fade out time is 64* in ms 4.206 (12/28/96) - Minor bug fixes and ... lower case support in archives !! + Archives can now be deleted ... - When playing a list, if the current module terminates while the file manager is present, the list playing would stop + Skip button added in top left corner when playing list + Added immediate exit with mouse. Click with right button on title bar - Very subtile bug fixed for portamento in 32-bit mode. A porta command with a new (different) instrument should assign old sample position to new sample. This position wasn't correctly computed (7SPIRITS.S3M, DAWN.MOD) 4.248 (12/29/96) + Added global surround indicator in config menu + Added CPU load bargraph * Added command lines for unarchivers of ZIP and ARJ in MMP.CFG. ARJ archives management is disabled for now because I haven't found a correct file description yet. * Now a different global surround state is saved depending on the listening mode: speakers (SP) or headphones (HP). I found great global surround with headphones, but not so great with speakers ... + Module names colored when in archive * Modules names in archives with length > 8+3 ignored !! (don't laugh they exist, I've seen them ... ! :) ) 4.260 (12/31/96) + Added temporary path for unarchivers. If path is empty then environment strings 'TEMP' and 'TMP' are searched; if this fails, the path set in string 'MMP' is used. If this string doesn't exist MMP uses its current path instead 4.318 (1/2/97) * XMS fixup for module titles. On some systems display in the file manager would show garbage; this fixup works only if MMP is able to enter XMS-32 bit linear mode. Thanks to David Bolton (BoltonD_at_MET21MF1@ccmail.edu.gov.on.ca) and Adoxa (hoodj@topaz.cqu.edu.au) for reporting this problem * Changed bargraph display - XMS init bug in fixup corrected * Help changed a bit and digital filter bypass available in config menu * Global configuration now reloaded when configuration saving disabled + Title panning in status bar available with mouse when title length is > 23 + Directory load stoppable with Esc in file manager. Very useful with slow drives especially with archives 4.325 (1/3/97) - Little bug in tree follower. Changed byte to word and initialization routine * Changed title display in main screen. Empty titles not displayed anymore with XMs 4.328 (1/5/97) * Fixed little bug in Master Volume change with keyboard and other minor things 4.340 (1/7/97) * Intensive optimizations of mixing routines and FFT using Pentium internal counters ! Thanks to Michael Kunstelj (virteam@smoke.canberra.edu.au) for his informations about Pentium internal counters. Among execution informations available in the Pentium, misaligned data accesses and Address Generation Interlocks are the most important. The first were reduced from more than 70000 misaligned data accesses (in one buffer calculation) to almost zero on a 24-track module ! (That shows the major problem when coding in 32 bit with a 16 bit compiler !) The second (AGIs) were reduced to 50% in somes routines, enabling more pairing and avoiding some pipeline stalls. Overall optimizations give a maximum 60% CPU-load instead of 80% on a 24-track module (with full options, on a P100) and allow the use of oversampling even with > 24-tracks modules on a P100 ! On earlier processors, data alignement gives the same, or more improvements. Avoiding AGIs is also good (don't know how much) for the 486 pipeline, but that's probably less important because it's got only one pipeline. If you're interested in optimizing your code using Pentium internal counters I can send you the routines I coded in pascal and assembler. 4.345 (1/8/97) + Added immediate exit with mouse in file manager. Click with right button ;) on title bar 4.375 (1/10/97) + Added ARJ support - Fixed color bug when selecting a file in archive * Changed DSP information procedure @ 4.382 (1/11/97) * Added 1 ms delay after DMA pause when modifying output frequency to avoid awful noises that could occur ... 4.400 (1/20/97) * More mixing routines optimizations for any processor and for Pentium ... a few percents down in CPU load ... Thanks to Anger Fog for his informations about Pentium optimizations. I know, now, that the mixing routines could execute almost two times faster in protected mode !! Why ? because the Pentium without MMX (most Pentiums in January 97 !) CAN'T pair instructions with prefixes, and when coding 32-bit instructions in real mode there's a prefix before almost ALL instructions ! The display of Pentium internal counters shows this, I measured a poor 10% use of the second pipeline (V-pipe) in the mixing routines ... 8( (a 100% use means that each pipe executes 50% of executed instructions ...) 4.412 (1/21/97) -- Found why config window would stuck with a SB Pro ! It was about time ! When displaying the config window, a request is made to the DSP to give its version and I just remembered (I have a SB16 and no access to a SB Pro ...) that the DSP v3.x (in SB Pros) can not accept any further command when switched in high speed mode, it then locks its ports ... and MMP too ! Now the request is done only once at hardware initialization. Big thanks to Joss for his collaboration and patient testing of MMP on his SB Pro ! Also thanks to VICO for this bug report and testing of MMP on SB Pro compatible sound cards. 4.425 (1/26/97) * A specific memory must be used for pitch slides to refresh effect datum when zero on XMs (GREY.XM) * Ctrl-break (ctrl-pause) disabled. When entered while in keyboard input mode, this could simply halt MMP without closing anything: at DOS prompt, module would continue playing and memory would still be allocated ! 4.602 (1/29/97) ++ Complete implementation of MIDI input !! Enter mode with F12 Available ONLY ON SB CARDS WITH DSP 4.00+ Now MMP is a GREAT MIDI expander ... single MIDI track for now, but the extension is easy ... It was a pity not to use the output quality of MMP for something else than modules, now, you can be much more active when you're in front of MMP ! MIDI commands recognized are: * Note On (this is a good one ! 8) * Note Off (not implemented on any MIDI system I know !, but who knows ... Note On with velocity 0 replaces this command) * Program Change * Sustain pedal * many other commands could be implemented such as portamento, master volume control, after touch etc., but I think this is not useful for now, if you think one more could be implemented just tell me ... Channels are allocated dynamically (called DVA in synths world), this means a new note is assigned to a free channel if there is one, otherwise, the 'oldest' note is replaced, and its channel re-assigned. But I think not everybody owns a MIDI system ! So, I have to work on PC keyboard input ... It works the same way as MIDI (i.e there's a command byte (key pressed, key released ...) and datum byte following (key number ...)) * Ctrl break sequence disabled by de-routing interrupt $1B 4.750 (2/1/97) * MIDI interpretor and DVA debugged * Samples stopping (when 'note off' is received) slightly improved: less ultra-clicks with samples without release envelope volume. + XMS 32-bit stereo and surround routines for 16-bit samples coded These routines are not enabled in DOS and DOS/EMS modes, i.e, 16-bit samples are translated to 8-bit in these modes + Added samples quality percentage in info menu * Minor bugs fixed + MIDI interpretor now multi-channel ! i.e, an instrument can be set on each of the 16 MIDI channels. Note on, Note off and program change commands apply to a specific MIDI channel + XMS 32-bit mono routines for 16-bit samples coded * Some pattern scanners (S3M, MOD) moved to LOADMODS unit + Added MIDI master volume control * Power meters adjusted for 16-bit samples * MIDI input disabled for DSP version below 4.00 * S3M samples not limited to 64000 bytes anymore. MMP is now less compatible with ST3, but this was a limitation, so ... Thanks to VICO for this remark and his S3M module * More code movement to units. Code segments are not saturated anymore ! 4.790 (3/1/97) + XMS 32-bit stereo interpolated, stereo surround interpolated, and mono interpolated for 16-bit samples coded. The stereo interpolated routines for 16-bit samples are a quite heavy work (and the heaviest one) for your CPU, so, a Pentium is strongly recommended ... even a 75-MHz will be very good because some of the instructions such as 'imul' (integer multiply) take down to 1/4th of clock ticks needed on a 486 ! 4.832 (5/1/97) * Mixing routines calls redesigned. Clearer and faster * Track attributes compacted in one byte (16/8 bit samples, surround/no surround, oversampling/no oversampling, 32/16 bit addressing mode and stereo/mono output) Now 32 mixing routines are easily addressed ! 4.850 (2/11/97) * In MIDI mode, tracks with volume zero are freed (only after key release). This was a problem with XM instruments as within a few notes, all tracks would be saturated ! * MIDI input mode now perfectly stable Dummy modules (just to load samples) didn't allocate enough memory ! This would corrupt heap at DOS shell. * Default instrument search for MIDI input (first valid) now correct * Global volume and track global volume set to maximum before entering MIDI mode * More code and data movement to units 4.860 (2/13/97) - Files with .XM? extensions in archives discarded (except XM of course !) 4.888 (2/23/97) + Added keyboard selection of instrument for manual play mode 4.894 (2/24/97) * Bug fixes and keyboard commands added for instrument selection in manual play mode 4.940 (2/25/97) + Added menu in the file manager for MMP modes: Multi player, Tone generator and Disk writer. When Tone generator is selected, MMP enters MIDI input mode directly 4.966 (2/27/97) + Added WAV support. Only files in mono mode and which hold in memory are loaded for now. I'll maybe add a 'direct from disk' read mode 5.040 (3/1/97) + Added XI FastTracker II instrument support * Fixed file type display and improved WAV playing * Long WAV files are truncated to available memory + Added configuration saving for Sample play mode and Tone generator mode. A specific configuration is saved for samples (WAV, XI) in Multi Player mode, and for Tone generator mode (any file) + More support for corrupted XM files 5.055 (3/3/97) * Bug fixes for configuration saving * Digital amplification now up to 16 times, should be enough ! 5.070 (3/4/97) + Added PC keyboard input to play samples. Enter F12, to play or select Tone generator mode. MIDI input and PC keyboard are active simultaneously 5.105 (3/5/97) * PC keyboard input fixed + Added keyboard input inhibition to allow a standard use of the keyboard (saved in MMP.CFG): hit F11 + Added octave shift (-24 - +24 half tones). Select with '/' and '*' 5.168 (3/7/97) + Disk writer (WAV) coded. The environment is minimum for now (no configuration, no indicator) * Keyboard input inhibited in the file manager (except the note off command); MIDI input is still enabled * Tracks stopped if in MIDI mode (or keyboard mode) when entering file manager 5.176 (3/9/97) * Modules with read-only attribute would be displayed without any information in the file manager + Added path for the disk writer in MMP.CFG 5.180 (3/11/97) * Amiga limits flag now considered for S3Ms. Thanks to Jaime for this remark and for his module (FDREAM2.S3M) 5.210 (3/13/97) + Octave transposition available for PC keyboard and MIDI keyboard ('/' and '*') * Memory allocation bug found in routine 'HeapShrink' by Kent Briggs. One paragraph more had to be allocated for the DOS shell @ 5.214 (3/23/97) * Changed UART Midi initialization and reset routines 5.218 (3/30/97) * Fixed upper limit in MIDI mode input * Keyboard buffer cleared before entering sample player mode 5.220 (4/1/97) - Fixed digital amplification saving bug. Values above 8.0 wouldn't be saved 5.226 (4/6/97) * Set MIDI mode to false in initialization routines + Added command line support for MMP modes. Enter '/MP' to force MMP to enter Multi Player Mode, '/TG' for Tone Generator Mode and '/DW' for Disk Writer Mode. 5.230 (4/13/97) - Fixed pattern loader for S3Ms. Patterns of size 0 would corrupt memory (CAPELLA.S3M) 5.252 (4/14/97) + Patterns now loaded in XMS when available, otherwise (DOS and DOS/EMS modes) DOS memory is used. This also allows to unfragment the heap, freeing more memory + Volume table discarded when module has only 16-bit samples. This frees up 33KB of DOS memory 5.265 (4/20/97) - Fixed pattern movement to XMS for XIs * Moved MIDI mode reset in hardware initialization routine (would make samples play in TG mode) * Now temporary file for module list selection written in temporary path or current path if temp. path not defined + Added list file type (LST) in file manager. Default list file is 'LISTE.LST' 5.288 (5/1/97) * Fixed list playing for archives + New parameter for MMP; now enter /ENV to force MMP to use environment string BLASTER to initialize hardware. Useful on some systems. Thanks to Warmbooter for this report + Added progress indicator for Disk Writer. Pressing Esc will abort the process and clear the file; pressing Enter will stop the process and keep the written data 5.290 (5/2/97) ++ NEW: nice little home page ! http://www.cerise.ml.org/charles Where you'll always find the latest version of MMP and the player units 5.312 (5/11/97) ++ Added ping-pong loop support, it was about time ! After thinking of it a second time, I found that there was a much easier method to implement ping-pong loop than coding new mixing routines ! Using a little more memory for the inverted loop chunk, the mixing routines (implementing forward loop) can be used as they are ! Moreover, the algorithm used here is much faster than the one used in the MIDAS sound system ... + I've got now a SB 32 (EMU 8000), prepare yourself for very high quality sound with MMP ! Yes, I know, the EMU 8000 doesn't handle ping-pong loop, but using the same process, a little more memory with a forward loop algorithm can perfectly emulate the ping-pong loop ... 5.320 (5/13/97) * Invalid temporary path in MMP.CFG checked 5.325 (5/15/97) - Invalid instruments occuring in pattern should cut current note (EXISTING.XM). Thanks to Gabriel Ilardi for this bug report 5.330 (6/22/97) * No more ultra-clicks with oversampling in some cases. Especially in K-SLACK.S3M 5.345 (9/28/97) - MMP now "lives" better with CLOAKING.EXE, a resident API used to free up more DOS memory using XMS (bundled with logitech mouse driver). MMP is still hanging when DOS shell is started, though ... - File manager bug fixed. Reloading a single ZIP file or a selection after a selection of ZIP files would transmit to the loader an invalid path ... 5.356 (12/7/97) * changing output frequency under MMP should be better now ... - disk writer fixed. It didn't work since MIDI implementation ! - WAV format fixed. WAV files now read by Windows applications. Output frequency is adjusted to an integral multiple of 25 5.360 (12/21/97) * Defined default colors on Rendition based graphic boards. Mouse cursor would appear red and module names would have wrong colors. (I've got now Diamond Stealth II ... what a crappy board in DOS modes ! but nice in 2D and great in 3D =) 5.370 (12/28/97) * changed patterns loader. Patterns were loaded in DOS memory before moving to XMS, now patterns are directly uploaded to XMS. Good for CYCLO.XM (has 250 KB of patterns !) * MTM pattern loader is affected by this change. A MTM file is organized in tracks, not patterns. It won't be loaded if the amount of tracks data multilplied by 4 is still below the total memory need of the compressed patterns (created from the tracks) ... clear ? if not, too bad ... anyway, I think of getting rid of this old format ... 5.382 (1/2/98) - Current note cut if invalid instrument played (CYCLO.XM). Second fix ! Thanks to Uhus for the following bugs report: - Arpeggio command fixed. Was played only once - Pitch slide datum restore fixed (BEHINDTH.MOD) 5.406 (1/25/98) - No more ultra-clicks with oversampler Thanks to Uhus for the following bugs report: - Protracker effects fixes. (volume slide, pattern delay, portamento) - XM loader fixed. Would lock with tiny modules (CDPART1.MOD, DEADLOCK.XM, THINKTWI.MOD, HELI.MOD, CREATURE.XM, GMS.XM, TURCH2HS.XM, HUNCHB2.XM, MIKIE_JL.XM, BEHINDTH.MOD, BLITZ.MOD, MENULDR.MOD, WELC2SBR.MOD, GRNBERET.MOD, OCEAN.MOD, SYNTHFLD.MOD, COMBATGA.MOD, THE_LAST.MOD, RAINING3.MOD, ADICTION.MOD ... and certainly other modules I haven't tested !) 5.436 (2/2/98) - Arpeggio fixed (should be OK this time ! Isn't it Uhus ?) ++ Two steps more toward sound perfection ... * Redesigned Digital Low Pass filter. Less clicks in high levels and effect is much smoother. It's also symetrical ( (left sample+2*middle sample+right sample)/4 ), giving high quality filtering. + Antialiasing filter with two or four times multiplier. This new filter is very CPU power hungry, so if you have less than a P133, just forget it ... modules are quite audible without it ... What does it offer ? Simple ... it filters high frequency noise, without any alteration of the signal. How does ot work ? The idea is to integrate the signal by creating more samples than the hardware can output at each unit time. E.g., when the antialiasing multiplier is set to 'x2', MMP computes two times the necessary samples; At a 'hardware output' of 45 KHz, the internal output frequency is 90 KHz; 90000 samples are computed each second, then averaged back to 45000 samples. At a multiplier setting of 'x4', the internal output frequency is 180 KHz ! So, beware and watch the CPU load ! This filter is very efficient WITH oversampling, because at those high internal frequencies, the relative frequency of samples will be much lower, activating almost anytime the oversampler. It works also without oversampling, but this is quite useless ... you'd better disable antialiasing, and enable oversampling, the CPU load will be lower for a better output ! And I should insist on one thing, the antialiasing filter (as the oversampler) does NOT alter the signal. The Low pass filter does ... * Pitch readjusted when antialiasing multiplier changed 5.450 (2/8/98) - Sample stop fixed in MIDI mode for non XM/XI modules (recent bug) * Wait procedure redesigned. The time constant was set for a P100, so guess what happened on a P200 ! Now the wait period is set for any system speed ... (1 ms is now really 1 ms !) This had some influence on the fade out procedure ; the delay being too short, some clicks appeared when switching from a module to another. 5.456 (2/24/98) - pattern loader fixed. Some very 'rich' XM patterns (often chip modules) could 'inflate' when compressed (!), thus corrupting the declared memory area (ALF.XM) - multi retrig (or retrig+vol. slide) command fixed for XMs. Thanks to Sebastien Perales for his bug report and module (GM.XM) * LST (list files) not displayed anymore when in archives 5.480 (2/28/98) ++ ALPHA version of IT player. Needs some bug fixes of course ! Implemented: - Instrument or sample mode - vol. and pan. envelope generators To implement a.s.a.p: - volume column commands parser - exact linear slide (not XM-like linear slide) - 10 octaves for notes (8 for now) - Dynamic voice allocation and associated features (NNA etc.) ... -- Home page http://www.cerise.ml.org not available anymore, sorry ! TCP/IP filters have been set by the webmasters here at the faculty of sciences in Nantes ("great" work dudes ... ! |( ) My workstation "cerise" is now isolated from the world (at least for HTTP ...) !! I'll probably be able to transfer the page on the faculty web server ... I'll upload a new version of MMP with the new web page address soon (some weeks) If not, some nice guys have great web pages to shelter MMP ! (Isn't it MAZ and Filip ? ;) 5.555 (3/4/98) * IT implementation fixes: * 10 octaves for notes * linear and protracker slides now correct * effects conversion * order list conversion * channel volume slide, panning slide - 16 bit samples loader fixed + Volume column panning implemented + Samples and instruments global volume * EMS instability fixed (about pointer operation) - subtile multi-sample bug with portamento fixed. (N55-RODR.XM). I write 'subtile' because I spent 2h30 on this bug ! (consider the 13000 lines of 386 ASM and 23000 lines of Pascal, and that I can't debug assembly because of hardware interrupts ...) * pattern loop changed for MODs (FLASSJAZ.MOD). End of loop without begin should make loop start at the top of pattern (as for XMs and S3Ms). Some other MODs seemed to need the contrary ... this probably depends on the tracker ... 5.560 (3/8/98) - Memory allocation bug fixed. Memory was freed too soon ! * Minor fixes in notes/intruments list conversion (IT) 5.575 (3/21/98) + Module file version displayed in info menu + Vol 0 and max number of opened tracks optimizations. Can decrease significantly the CPU load on modules with many tracks 5.585 (4/20/98) - bug in config window cursor movement fixed - extra patterns now played correctly (patterns declared in order list with size 0)