MPXPLAY Audio Player v1.56 by PDSoft

If You find a bug, first read the 'known bugs' section below, 
if the bug isn't there, please write it to me with these informations:
-your hardware (CPU,RAM,Soundcard)
-your operating system (DOS,Win95/98)
-your command line options (i.e. mpxplay.exe -bp -cf playlist.m3u)
-description (what did you do, and what did the program do, when you found it)
 (i.e. keyboard operations)

I never can test the program totally. Sometimes a modification causes a new bug.
If a function doesn't work properly (but it worked in the previous version(s)),
please write it to me...

Known bugs and limits:
- DOSLFN with Mpxplay can cause data loss or directory entry fault at file 
  write/create and at copy/rename/move (commander functions and playlist save) !!!
  Use DOSLFN for disk reading only! 
  (I don't know yet where is the bug, but I assume it's in DOSLFN, because Mpxplay works properly under windows)

- ID3v2 writer can't duplicate the file (can't extend the header size) -> 
  you may lost some infos from the header if there's not enough space to store 
  the new/modified tags !!!

- see FAQ.TXT for extender (DOS32A,DOS4G,PMODEW) bugs & limits
- multichannel playing (ie:5.1) is supported at AAC,AC3,DTS only (downmixed to stereo in decoder) (others decode mono/stereo only)
- AAC :
 - time-length,bitrate,seeking-bar and some time-pos related functions (crossfade,soundlimit) 
   are not correct at RAW and ADTS fileformats (but good at ADIF)
   (the program doesn't (cannot) calculate correctly the time-length of the file)
 - slow seeking in some cases (1st far forward jump)(slower at RAW and ADIF)
- MPC : 
 - only Streamversion 7.0 and 7.1 are implemented/supported
 - seeking problems (?) (sometimes the seeking can fail, and the playing stops or skips to the next song)
- CDW : 
 - doesn't work on every CD-ROMs (only on those, which can copy/ripp/grab audio tracks)
 - the door open/close also doesn't work on every drives
 - maybe the DOS version doesn't work under WIN95/98 (hardware dependant?)(it works with my DVD players (TEAC,Toshiba))
 - program opens/reads one track only at once (cannot play and copy simultaneously)
 - seeking bugs/fault with -bpn option (when the next file is opened/loaded)
 - win32/aspi: the drive letter (d:) may be reversed/exchanged at 2 or more drives (couldn't assign the drive letter(s) to the aspi device number(s) yet)
- DTS/AC3 : seeking problems at some files
- mixer:
 - soundlimit (-sl) has no effect at the begin of files in the default -bp (interrupt decoder) mode, only in -bs,-bn,-bni,bn8 (interrupt decoder is disabled) modes
- tone control (bass,treble): 
 - built-in software based works on MP3/MP2/MPC files only (use the SuperEq plugin for other/all filetypes)
 - hardware based works on some SB16 and AWE64 cards only
- soundcard routines:
 - if you play 48khz files with original SB16 card (which cannot play 48k) use '-of 44100' option
 - maybe the soundcard IRQ works below 8 only (3-7) (set the IRQ to 5, then it will work) (SB16,SBpro,GUS)
 - Win9x (DOS version): only SB16, SBpro and GUS work in background (because they use IRQ)(other cards work in active window only)
- crossfade: 
 - doesn't work between files with different freqency (i.e.: 22khz->44khz)
 - doesn't work in demo-mode (hi-scan)
 - doesn't work at fullbuffer (-bl) or at large prebuffer (-bbn 500), at auto-pause (-pap/ctrl-p) and pause-next (ctrl-s) functions
 - increased volume + limiter = non-linear fade-out and fade-in
- Win9x (DOS version):
 - lfn getcwd function (int21h,ax=7147) doesn't work properly -> causes bugs in directory browser (it's good with DOSLFN)
 - possible dir-scan problems on substed drives (directory browser and -ds)
- possible random mode bugs (with crossfade)
- possible timing problems using -bn8 (mouse,joy,?)
- seeking is not exact on some VBR filetypes (MP3,OGG) and may be buggy on older APE files (v<=3.92)
- Mpxplay cannot play very short files in some cases (shorter than 0.5 sec)(shorten than the DMA buffer)
- the spectrum analyser works properly on 44khz/stereo files only
- sort function (-io or ctrl-F1-F4) doesn't work properly with -ipl/-idl/-ihl/-is functions

- minimum playback freq: 512Hz (max is 4Ghz, but maybe the speed of your HD/CPU is not enough to play a more than 10 Mhz wav file)
- maximum number of playlist entries is (configurable by MaxFilenames in mpxplay.ini):
  in normal mode: 1999 (left side,directory browser), 9999 (right side,playlist)
  in doombox mode: 9999 (left side/playlist), 1999 (right side/doombox queue)
  (max. playlist size: 64*9999 = 640 kbyte)(640k for filenames, 640k for id3-infos)
- mpxplay.ini : max filesize=256kbytes; max number of lines=768; 
  max chars per line=512 (this may cause bugs (at sublist save/restore))
- startup:
 -CMOS (+4): only the fastlist number (on 3 bits: max 7 fastlists), the song (playlist entry) number (on 14 bits: max 16383 entries) and the file position (% on 7 bits) are saved/restored
  (if no fastlist are configured in mpxplay.ini, then the song number is saved on 17 bits (for max. 131071 playlist entries))
 -double side (+16): list/song-pos restore doesn't work if you give a drive/directory scanning in the command line (because in this mode the drive/dir scans saved in a CUE list on exit, even if they weren't modified in the editor) (but works at non-modified playlists (M3U,MXU,etc.))
   ("mpxplay.exe -psu 27 d:\*.*\*.*" or "mpxplay.exe -psu 27 -ds cde" -> startup doesn't work, "mpxplay.exe -psu 27 playlist.m3u" or "mpxplay.exe -psu 27" -> startup works)
- the SBpro compatible cards: 
   - sound with 8 bits & 22khz only (bad quality)
   - use more CPU (freq conversion 44->22khz)

-------------------------------------------------------------------------------
Other informations:

-PLAYLIST usage:
 -you can create a playlist:
  - under DOS with the  DIR /B/ON *.MP3 > PLAYLIST.M3U  command
  - with Mpxplay:
    MPXPLAY.EXE d:\*.*\*.* -@s playlist.m3u
    MPXPLAY.EXE -ds c -@s playlist.m3u
    MPXPLAY.EXE -ds c -@s playlist.m3u *.mp3  (create playlist from C drive with MP3 files only)
    MPXPLAY.EXE -ds c -irl -@sw playlist.m3u  (to store/save file infos (artist,title,time) in the M3U)

 -MXU (extended playlist / file database):

  -create: MPXPLAY.EXE -irl -@sx EXTLIST.MXU PLAYLIST.M3U
       or: MPXPLAY.EXE -irl -@sx EXTLIST.MXU d:\*.*\*.*

  -use (load): MPXPLAY.EXE EXTLIST.MXU                 (used like a playlist)
           or: MPXPLAY.EXE -ig EXTLIST.MXU d:\*.*\*.*  (used to load file infos faster)
           or: MPXPLAY.EXE -ig EXTLIST.MXU             (without input file(s) -> for faster directory browsing)

  - You can use sub-list(s) in extended playlist on this way:
    (you have to write these lines manually into the mxu list)
    ('' '' ''chars are ascii 176,177,178)
   -M3U sub-list:
     D:\AUDIOMP3\PLAYLIST.M3U[sub-list]00000000
   -MXU sub-list:
     D:\AUDIOMP3\PLAYLIST.MXU[sub-list]00000000

 -subdir scan examples:
  D:\*.*\*.*        : load all supported (audio) files from the D drive
  D:\ABC*.*\*.*\*.* : load files from ABC*.* subdirs and from their subdirs
  D:\ABCD\*.*\*.*   : load files from ABCD dir and from its subdirs
  D:\?*.*\*.*   : load files from the first subdirectory level only (don't load root and don't scan deeper subdirectories)
  D:\ABC*.*\*.* : load files from ABC*.* subdirs only
  *.*           : load files from the current directory only
  *.MP3         : load MP3 files from the current directory

-ID3-TAG write/update in AAC/AC3/APE/MPC (APEv2-tag) and MP3/MP2 (ID3v1.0,v1.1, ID3v2.3,v2.4):
  
 -you can use -iw with -it options (-ita,-itt, etc.) (see readme.txt)

 -or you can use a -il listfile on this way:

  make a text file in this form (write artist:title after every filenames)(don't write spaces in the filenames):

  filenam1.MP3 artist1:title1
  filenam2.MP3 artist2:title2
  filenam3.MP3 artist3:title3

  Name it to !FILES and run my program with these options:

  MPXPLAY.EXE -iw -il !FILES playlist.m3u
  or
  MPXPLAY.EXE -iw -il !FILES *.*

  and the program will write this ID3 info(s) into the audio files.

  (the listfile (!FILES) is same like an m3u file, but with artist & title)

 examples:
 mpxplay.exe -iw -il !FILES -itl "80's collection" -itc "encoded by myself" playlist.m3u   (you can use -il and -it options together)
 mpxplay.exe -iw -ita "Name of the artist" -ity "2004" *.mp3              (modify/write artist and year tags in all MP3 files)
 mpxplay.exe -iw -itl "New album name" -itc "" track04.ape track11.ape   (modify the album and clear the comment in the track04.ape and track11.ape files)


-FRAMES: Mpxplay handles the files in frames. 1 frame is usually 4608 pcm bytes (1152*channels*2)
	 (1 sec = ca. 38 frames at 44.1kHz)(depends on the freq of file too)

-CD-WAV (CDW) : the cd-wav function is not a simple audio CD player, this is
 a real time Digital Audio Copy (it reads the cda sectors and writes them to
 the sound card), because of this you can use crossfade, speed control,
 auto volume correction and surround on audio CDs and you can copy the
 audio tracks to the hd (with ALT-F5).

-USING MPXPLAY 
 - WITHOUT HARDDISK: I haven't tested it, try -db option
 - WITHOUT VGA CARD: I also haven't tested it, try -f0 option

-LESS CPU USAGE: the program uses less cpu time without spectrum analyser,
 volume correction, surround, soundlimit and volume meter.
 Use this for slow CPUs: mpxplay.exe -sl 0 -ddma -f0 -v -bl -bn8 playlist.m3u
 OR: mpxplay.exe -sl 0 -ddma -bl -bn8 playlist.m3u
  and set in mpxplay.ini: Displaymode=76 or Displaymode=92 and Desktopmode=1018

-SOUNDLIMIT: cuts (don't write to the output) the signal below
 "soundlimit" it doesn't play (only decode) while, and it finishes the play
 (exit or step to next song in playlist) in last 400 frame when volume is
 bellow or equal to soundlimit.
 Set it to 50 for disco, 10 for classical music, 1 to cut at 'digital noise'
 and 0 to disable soundlimit checking.

-VERBOSE: in verbose mode (-v) you get more informations (header info:layer,bitrate,etc.,
 ,ID3tag info:artist,title,year,...)(use it for -f0,-ff or -fl)

-TEST MODE: in test mode (-t) the program writes the output nowhere (null output)
 and you can test the speed of your computer and my program.
 You get the the results at the end of running.
 Index value must be above 100% to play properly audio (MP3) files.

-DISPLAYMODE configuration in mpxplay.ini:
 (default: 126 = 64+32+16+8+4+2; -fl: 2; -fl -v: 6=2+4; -fe -fs : 14=8+4+2)
(bit)(add the number to Displaymode variable)
       0 no display
 0.   +1 only frame counter is displayed (use it with -f0 (0) & -v (+4) only)
 1.   +2 timepos is displayed
 2.   +4 id3info & header are displayed (-v)
 3.   +8 use fullscreen
 4.  +16 use half screen editor (else fullscreen)
 5.  +32 spectrum analyser enabled
 6.  +64 use (change display to) 50 lines mode (else use the initial (DOS) resolution)

-DESKTOPMODE configuration (default: 507 = 1+2+8+16+32+64+128+256):
 0.     +1  show song position line (....)
 1.     +2  show playlist position line (....)
 2.     +4  reserved (not used)
 3.     +8  show playlist editor elevator ()
 4.    +16  vertical editor sides (else horizontal)
 5.    +32  show filename with fullpath at the top of the editor
 6.    +64  show fulltime (in bottom right corner)
 7.   +128  show songtimes in editor
 8.   +256  show songnumbers in editor
 9.   +512  show drive letters in editor
10.  +1024  always show filenames in editor (filename artist:title)
11.  +2048  follow browser (via mouse) in editor
12.  +4096  shift playlist entry up or down by mouse (drag & move) (otherwise scroll editorside)
13.  +8192  allways follow song-skip with the cursor/editorhighline (else follows only if it stands on the current/played song)
14. +16384  disable "move side with editorhighline" function (set old editorhighline/side moving method)
15. +32768  disable ID3-window scroll
16. +65536  confirm exit

-LOADID3TAG configuration (default: 7 = 1+2+4)
0. +1: use mxu/extm3u/id3list
1. +2: load tags from audio files
2. +4: create artist:title from (long)filename if no other id3info (enabled by default)
  (detected filename formats are: "Artist - Album (YEAR)\NN. Artist - Title.XXX" or "Artist - NN - Title.XXX" (one or more of the items can missing)(NN is tracknumber))
3. +8: prefer list-tags (got from extm3u,mxu,id3list) (else prefer audiofile-tags)

-available CPNAMEs (codepages) for -8cp option:
 ISO-8859-1 (normal US ASCII), ISO-8859-2 (the default)
 ISO-8859-3,ISO-8859-4 ,ISO-8859-5 ,ISO-8859-6 ,ISO-8859-7, ISO-8859-8,
 ISO-8859-9,ISO-8859-10,ISO-8859-13,ISO-8859-14,ISO-8859-15,ISO-8859-16,
 CP424,CP437,CP737,CP775,CP850,CP852,CP855,CP856,CP857,CP858,CP860,CP861,
 CP862,CP863,CP864,CP865,CP866,CP869,CP874,CP1006,CP1250,CP1251,CP1252,
 CP1253,CP1254,CP1255,CP1256,CP1257,CP1258

-limiter function (MixerControl=1): is a fast auto volume reduction (if required)
 after crossfade (HQ), surround(HQ), tone-control(HQ) or if SoundVolume>100 (LQ,HQ)
 (usually the limiter function can't work properly in LQ (HQmode=0) mixer mode)

-------------------------------------------------------------------------------

Speed test results:

(index: mpxplay.exe -t -ff -sl 0 -db -xel file.mp3 ; CPU: mpxplay.exe -fl -bl -bn8 file.mp3)

 On Intel Celeron 300A (4.5*66.6) with PC100 SDRAM and ASUS BX mainboard (program is optimized to this machine)

  MPXPLAY 1.47.6:   MP3: index:2650%  CPU:4%  (128kbit,MsStereo)
                    MP2: index:3358%  CPU:3%  (256kbit,Stereo)
                    MPC: index:2738%  CPU:4%  (154kbit,MsStereo)(-radio quality)
                    OGG: index:2317%  CPU:5%  (130kbit,c-Stereo)(Vorbis 1.0 encoded file)
                    AC3: index:1719%  CPU:7%  (192kbit,Stereo)

Speed comparison of different computers with different versions of Mpxplay
(index values of MP3 speed tests)

    CPU: 486DX2 AMDDX4 AMD5x86 Pentium PPRO  PII
    Mhz:   66    100     133     100   200   300

ver 1.47                                     2650
ver 1.46                                     2620
ver 1.45                                     2589
ver 1.44                                     2635
ver 1.43                               1750  2620
ver 1.42               175.8   423.3   1639  2502
ver 1.41               174.4   411.8   1619  2489
ver 1.40  93.3  134.1  173.7   418.3   1636  2485
ver 1.39  89.9  125.0  163.4   383.4   1504  2298
ver 1.38  89.1  123.7    -     376.7   1499  2284
ver 1.37  84.3  117.9    -       -     1410  2166
ver 1.36  84.3  117.3  162.0   339.8   1401  2156
ver 1.35  85.6  119.9  156.9   342.2   1369  2074
ver 1.34  84.0    -    155.0   326.3   1283  2033
ver 1.33  84.5  118.4  155.2   327.3   1275  2024
ver 1.32  84.7  118.8  154.8   329.3   1279  2024
ver 1.31        119.0  152.6   329.5   1365  2104
ver 1.30        118.3  152.7   326.2   1275  2009
ver 1.29        117.1  151.7   302.6   1106  1729
ver 1.28        115.7    -       -     1170  1786
ver 1.27          -      -       -      -    asm bug
ver 1.26        111.1  142.5   277.5   1000  1530
ver 1.25        110.7  142.7   280.4   1049  1617
ver 1.24        108.8  141.0   277.5   1037  1588
ver 1.21               138.8   269.8   1010  1542
ver 1.20               137.0   263.8    980  1477
ver 1.10               137.7   265.6    968  1458
ver 1.00               137.7   263.9    973  1462
ver 0.07               139.0   275.5   1002  1531
ver 0.06               139.2   276.0   1003  1530
ver 0.05               134.3   247.9    823  1154
ver 0.04               134.3   246.7    823  1158
ver 0.03               134.3   247.4    828  1173
original:                                     819
