| MPR.EXE is a DOS MP3
player program which plays all MP3 files on your computer (up to
10,000 songs) in random order, with no repeated songs. Playback may
be interrupted and resumed at any time. Play history is saved in a
file and restored each time the program is started. No song will
ever be repeated. Playlists are neither required nor supported.
Target applications are background music generators, automotive
embedded players and automated radio stations.
At this time only Soundblaster 16 and compatible sound cards are
supported.
This program is 100% written in assembly and designed to run on
low-end systems. 64Kbps files can be played on a 486DX-50 and 80Kbps
files on a 486DX2-66. Higher bit rates require more computer.
4/586's in the 100 MHz range and Pentium 60's may or may not play
the highest bit rate files. The limits of each marginal computer
must be determined empirically. A 586-133 should play any MP3 with
power to spare. Click here for
instructions on building the best MP3-playing computer possible.
Despite the
existence of an old Windoze version, Windoze is not supported, as it
is totally inappropriate for any intended use of this software.
Could you imagine asking Bill to shut down his bloatware before you
shut off your car?
The huge DMA buffers and massive decode buffering in the original
version of MPR, that gave antiquated 486 computers sufficient time
to access the hard drive, accidentally allowed it to run in a DOS
box under Windoze 95/98. Ever-increasing numbers of Pentiums on the
used computer market, the addition of more real-time features (VU
meters) and the advent of Windoze versions with no DOS support have
changed the design criteria. Now, the emphasis is on reducing the
memory required to run the program so larger MP3 files can be
buffered in memory. Consequently, the DMA block size has been
reduced. Windoze is too busy getting in its own way to virualize
everything in the world and deal with interrupts every 26 ms, so MPR
clicks and sputters, just like Winamp. If you must use Windoze,
stick with the old version. The VU meters don't display properly in
Windoze anyway.
A real Windoze version might be created someday. It depends on
the interest level (thus far, zero). Considering that there are
hundreds of Windoze MP3 decoders out there already and that the
entire MP3 community is hopelessly mired in playlists, this proposal
has very low priority.

ID3 tags are supported if they reside at
the head of the file. Artist (TPE2), Album (TALB) and Title (TIT2)
will be displayed if found.
| Invocation and
options: |
Default Soundblaster parameters: Port 220, DMA 5, IRQ
5. It would be a real good idea to have a viable
"BLASTER=" environment string defined, as these defaults will
only work about half the time.
Once operating, <ESC> exits, <N> plays the next
song and <P> pauses. (<H> toggles the songs-played
history display in the old version.)
The MP3 search path can be specified on the command line
(MPR d:\clas\mp3\;e:\rock\mp3\;etc), or defined with an
environment string (MP3PATH=...). In either case, the syntax
is exactly like the normal DOS SET PATH=... If the path is
specified on the command line, the file history file is not
loaded or updated.
Command line options (not case
sensitive):
-1 Play one song (that is the
number: one). -B Buffer entire song in
memory. -D Delay during
startup. -H Print these options (Not in
original version). -L Play songs in linear
order. -P Abort with LPT1
ACK. -R Use RAMdisk (Deprecated -- original
version only). -V Set mixer master
volume.
Play one song will
play the song or songs (*wildcard) specified on the command
line and exit. This option also selects linear playback (see
below).
Buffer entire song in memory
attempts to allocate a RAM buffer big enough to contain
the largest song in the library and loads each song into the
buffer before play begins. If there is insufficient memory for
the buffer, the option is disabled and songs are spooled from
disk. This is the fastest mode for playback and minimizes disk
activity and communication with the OS.
Delay during startup will beep
and delay 5 seconds before playing the first song. This is
handy for stand-alone or embedded machines that start up from
AUTOEXEC.BAT. The 5-second delay gives the user a chance to
stop playback for maintenance or whatever without wasting a
song. The beep is also a good indicator that the thing booted
and is running when there is no monitor. If this option is
selected, there will also be a beep when the program is
terminated.
Help prints a single line
containing the command-line options and exits.
Play songs in linear order plays
songs in the order in which they are found on the disk. Random
playback is disabled and the songs-played history file is
neither loaded nor updated.
Abort with LPT1 ACK allows for
orderly shutdown in a system without a keyboard. A simple push
button switch from ACK (pin 10) to ground (pins 18-25) on
printer port 1 can be used to emulate the function of the ESC
key.
Use RAMdisk assumes that the
current drive is a RAMdisk. Each file will be copied from the
hard drive to the current drive and played from the current
drive. This is useful for old computers with really slow
drives or mobile systems that need to minimize hard drive
access. Be forewarned that there is no checking whether the
file will actually fit on the RAMdisk.
Set mixer master volume sets the
volume to the value specified by a single hex character (0-F)
following the command. To set the volume to 12, the command
line option would be -VC.
The play history is stored in the root directory of drive
C: in a file called PLAYMASK.MSK. This file is updated when
the program exits. If the file is deleted, playback begins
from scratch. |
| Indispensable
MP3 utilities (DOS programs that will run under Windoze):
|
Front-end for LAME (3.9K) . The .ZIP
file contains the executable, assembly source and
instructions. This program will use LAME.EXE to encode all
.WAV files in the directory from which it is run. LAME
parameters default to "-b256 -ms -h -t", but can be overridden
on the command line. Assembly source is included for those who
wish to change the default parameters.
MP3
tagger (1.6K) . This program will insert ID3
tags based on the Windoze long filenames in all files in the
directory from which it is run. The filenames must have the
format Artist - Album -
Title.mp3. Corrections to tags can be made by renaming
the bad files and re-running the program. It will ignore any
files with tags that match their filenames, add tags to files
without them and update tags that do not match their
filenames.
MP3 file checker (1.8K) . This program
checks the format and structure of an MP3 file and reports
what it finds. No changes are made to the file. The best use
of this utility is realized when it is added to the
right-click menu for .MP3 files under EXPLORER.EXE.
Sample
output: Incorrect ID3 header length
1st frame negative main_data begin
Extra bytes between frames at 00024568
Last-frame tag corrupt
Time = 5:05
Sample frequency = 44,100
Bitrate: Min = 56 Max = 320 Avg = 269
11,687 frames
56 1
112 3
128 12
160 423
192 1,993
224 1,726
256 1,607
320 5,922
MP3 file fixer (1.7K) . This program
finds and fixes many strange things some encoders write into
MP3 files, many of which preclude proper decoding by MPR.EXE.
Warning: This program writes
changes to the MP3 file. If this is not what you want, don't
run the program. The best use of this utility is
realized when it is added to the right-click menu for .MP3
files under EXPLORER.EXE.
MP3 leading frame remover (1.3K) . This
program removes the specified number of frames from the
beginning of an MP3 file. It tries to prepend a new first null
frame to prevent decode errors. Any ID3 header is copied to
the new file unchanged. The modified file is written as
REMOVED.MP3.
MP3 trailing frame remover (1.1K) . This
program removes the specified number of frames from the end of
an MP3 file. The file is chopped after the requested frame, so
any ID3 trailer is lost. The modified file is written as
REMOVED.MP3. |
Comments and suggestions welcome:
There are no plans to release the
source code for this product. If significant interest develops, a
C-callable frame decoder module may be offered for a nominal fee.
|