blob: d8432fc10e587982c3f488190c35e66ac84491f1 [file] [log] [blame] [raw]
DOSMid - a low-requirements MIDI and MUS player for DOS
http://dosmid.sourceforge.net
*** INTRO ***
DOSMid is a MIDI and MUS player for DOS. It's a real mode application designed
to run on very modest hardware configurations. It plays standard MIDI files,
as well as MIDI in RIFF (ie. RMID), and MUS tunes (as used by Id Software in
numerous games like Doom, Heretic, Hexen, etc).
DOSMid is not a software MIDI emulator, hence it requires a MIDI-capable
hardware available either via the standard MPU-401 interface, or an EMU8000
engine (as found on SoundBlaster 32/64 AWE series). Note, that some sound
cards provide an MPU-401 interface natively, although many need an additional
'wavetable' daughterboard to produce actual MIDI sound.
Since DOSMid v0.7 it is also possible to somewhat emulate MIDI via FM
synthesis using an OPL chip (that is one of the Yamaha YM3812 or YMF262 chips,
found on most sound cards from the late nineties) - be warned however that
most of the time, such MIDI-over-OPL emulation will yeld less than desirable
results, unless the MIDI file was specifically crafted for OPL.
Minimal requirements:
- a MPU-401 compatible sound card with a synthesizer (wavetable or external),
or a SoundBlaster AWE32/AWE64, or (if desperate) an OPL FM synth
- an 8086 CPU or better
- a video card able to display an 80x25 text mode (ie. CGA or better)
Highly recommended:
- an 80386 CPU
- VGA
- 512K of available XMS memory
*** USAGE ***
During runtime, DOSMid can be controlled with the keyboard:
ESC Quits to DOS
+/- Volume up/down
PAUSE Pause the song (press any key to resume)
ENTER Skip to next song
At the command-line, DOSMid accepts several options, as listed below:
DOSMID [options] file.mid (or m3u playlist)
/noxms Use conventional memory instead of XMS. This is obviously useful
only if you don't have have XMS. Don't use this option otherwise,
since without XMS you won't be able to load MIDI files bigger
than a few dozen KiBs (at least not all tracks).
/delay Wait 2ms before each XMS access. Such waiting is required sometimes
when the MPU controller is emulated by a TSR driver (specifically,
the AWEUTIL driver used with SoundBlaster AWE 32/64 cards happens
to crash if XMS accesses are not slightly delayed).
/mpu=XXX Force dosmid to use MPU-401 on port XXX. If not forced, DOSMID
scans the BLASTER environment variable for the MPU port, and if not
found, it fallbacks to port 330h. The port part is optional, that
means you can use "/mpu" to just force MPU usage.
/awe=XXX Use the EMU8000 synth chip found on SoundBlaster AWE32/AWE64 cards
on port XXX (the port is optional, you can specify just "/awe").
Known bug: On some AWE cards, the FM music module becomes muted or
noisy after using the EMU8000 chip. This is not a bug in DOSMid,
and happens with other applications using AWE as well. If you have
this problem, execute AWEUTIL /S after using DOSMid to reinit FM.
/opl=XXX Use an OPL2-compatible chip on port XXX. This should be a last
resort option if you don't have a wavetable device. Do NOT expect
pleasing results. The port part is optional ("/opl" will use port
388h by default).
/log=FILE Logs all DOSMid activity to FILE. This is clearly a debugging
option that you shouldn't be interested in. Beware, the log file
can be pretty big (much bigger than the MIDI file you are playing).
/fullcpu Do not let DOSMid being CPU-friendly. By default DOSMid issues an
INT 28h when idle, to let the system be gentler on the CPU, but on
some hardware this might lead to degraded sound performance.
/dontstop Never ask the user to press a key after an error occurs. This is
useful if you want to play a long playlist and don't care about
bad MIDI files, simply skipping them (or if you play a single file
and wish that DOSMid exit immediately if the file is unplayable).
/nosound Disable sound (not very useful for a music player!)
*** THE BLASTER VARIABLE ***
When not forced into a specific configuration via command-line switches,
DOSMid scans the BLASTER environment variable to find out the most desirable
settings. A BLASTER environment variable usually looks similar to this:
SET BLASTER=A220 I5 D1 T3 P330 H6 E620
The bits DOSMid is interested in are "P330" and "E620". The former provides
the port address of the MPU-401 MIDI interface, while the latter tells the
port address of the EMU8000 onboard synth (available only on 'AWE' models). If
not instructed otherwise, DOSMid will always try to use the EMU8000 synth if
found in the BLASTER string, and if not, it will use the MPU-401. If neither
of them are found in the BLASTER string, or if there is no BLASTER variable at
all, then DOSMid will try to use FM synthesis on port 388h.
*** LICENSE ***
Copyright (C) 2014, 2015, Mateusz Viste
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.