MM CHECK 1.0 DOCUMENTATION
Theta Band Software

=============================================================================
PART 1

This section talks about the installation and use of MM CHECK.


-----------------------------------------------------------------------------
What is MM CHECK?

This program will examine your MMPM2.INI file and produce a
report on it.  Based on the contents of the report, you can
determine whether there is a problem with your MMPM2.INI file.
With the help of the online documentation and Theta Band Software
support, you can make the necessary repairs.

The MMPM2.INI file is a configuration file for OS/2's multimedia
support.  OS/2 uses MMPM2.INI to determine which devices are
installed and what they're capabilities are.  An error in MMPM2.INI
typically results in the inability to play a certain media file.
For instance, even though you have a sound card and the drivers are
installed, for some reason you still can't play a wave file.

MM CHECK will not repair your MMPM2.INI file - it is impossible for
any software to be able to know for certain how to correct all
errors in your MMPM2.INI file.  In addition, MM CHECK does not identify
all possible problems - even if MM CHECK reports no problems, there
may still be something wrong.  For this reason, your purchase of
the MM PACK entitles you to support from Theta Band Software for
determining the real cause (and solution) to your OS/2 multimedia 
problems.


-----------------------------------------------------------------------------
How do I install MM CHECK?

MM CHECK comes with a simple installation program, INSTALL.CMD.
This can be run from the command line or from the desktop.  The
installation utility will copy a few files to your hard drive
and create a folder and some icons.  The folder will be located
in the "Multimedia" folder which is inside the "Programs" folder.
This folder will be labelled "MM Pack", and a shadow will be placed
on the desktop.

The MM Pack folder will contain three icons: "MM Check", 
"MM Check Output", and "MM Check - Read Me First".  The first
is an icon for the program itself - double-click on it, and
you will run MM CHECK.  The second icons will display the report
that MM CHECK creates.  The third icon is this text file.


-----------------------------------------------------------------------------
How do I use it?

MM CHECK can be run from either the desktop or the command line.
The installation program creates icons on the desktop (see the
previous section) which let you run MM CHECK and view the output.

The MM CHECK program, mmcheck.exe, is copied to your \MMOS2
directory, which should be in your PATH. This makes it easy to run
from the command line:

        [C:\] mmcheck.exe

In this case, MM CHECK will determine where MMPM/2 is installed and
use the default MMPM2.INI file.

The optional command-line parameter is simply the location and
name of an MMPM2.INI file.  For instance:

        [C:\] mmcheck.exe c:\backup\badmmpm2.ini

MMCHECK displays several lines of text as its output.  This output is
also copied to the file MMCHECK.OUT.

-----------------------------------------------------------------------------
How does it work?

MM CHECK scans your MMPM2.INI for errors.  MMPM2.INI is divided into
sections, and each section contains a number of lines of text.  There 
are strict rules which govern the names and the contents of each section,
and MM CHECK knows these rules.  MM CHECK examines MMPM2.INI to make
sure it follows all the rules.  If it sees a problem, it reports it.

When you run MM CHECK, you will see some introductory information, that 
looks like this:

        [C:\] mmcheck
        MM CHECK 1.00.00, Compiled Jul  1 1999
        Copyright (C) 1999, Theta Band Software
        Using C:\MMOS2\MMPM2.INI. Length is 5063

If the INI file is okay, you will then see a number of lines
that all start with "Checking" and nothing else, like this:

        Checking [Drivers]
          Checking CDaudio
          Checking Waveaudio
          Checking Sequencer


-----------------------------------------------------------------------------
What exactly does MMCHECK check?

General syntax check. Check that it's a text file with sections marked
with [] and every other line is of the form XXX=YYY

There is a [systemvalues] section.

There is a [Drivers] section.

The [systemvalues] section has only these keys: closedcaption, mastervolume,
 headphones, speakers, workpath, qosvalue, and qoserrorflag.

The [Drivers] and [defaultnames] sections have one and only one instance of
  each of these keys:
  Videotape, Videodisc, CDaudio, DAT, Audiotape, Other, Waveaudio, Sequencer,
  Ampmix, Overlay, Animation, Digitalvideo, Speaker, Headphone, Microphone,
  Monitor, CDXA, and Filter.

Sections that end in -PLAY or -RECORD only have these keys: NUMDEVICES,
 NUMCONNECTIONS, DEVICExx, and CONNECTIONxx.

All other sections have keys from the following list only: VERSIONNUMBER,
 PRODUCTINFO, RESOURCENAME, DEVICEFLAG, DEVICETYPE, SHARETYPE, RESOURCEUNITS,
 RESOURCECLASSES, VALIDCOMBINATIONS, CONNECTORS, PARMSTRING, ALIASNAME,
 MCDDRIVER, VSDDRIVER, PDDNAME, MCDTABLE, EXTNAMES, EATYPES.

For each value of each key in the [Drivers] section, there is another section
 of the same name.

For each key in the [defaultnames] section, there is only one value, and there
 is another section with the same name.

For each section, checks if these keys exist, have the right number
 of values, and that the values have valid characters: VERSIONNUMBER,
 PRODUCTINFO, DEVICEFLAG, DEVICETYPE, SHARETYPE, RESOURCEUNITS,
 ALIASNAME, RESOURCENAME, MCDDRIVER, MCDTABLE, EATYPES, EXTNAMES.

For each section, checks if MCDTABLE key has a single value of "MDM".

For each section, checks if the value of SHARETYPE is one of "1", "2",
 or "3".

For each section, checks if DEVICETYPE key is set the correct device type,
 which is a number from 1 to 18 (MMPM/2 knows 18 device types).

For each section, checks if the first value for key EXTNAMES is a number,
 and the count of other values is equal to that number.

For each Videotape section, checks:
 (standard checks only)

For each Videodisc section, checks:
 if the PRODUCTINFO value is equal to "Videodisc"

For each CDaudio section, checks:
 (standard checks only)

For each DAT section, checks:
 (standard checks only)

For each Audiotape section, checks:
 (standard checks only)

For each Other section, checks:
 (standard checks only)

For each Waveaudio section, checks:
 if the MCDDRIVER value is "AUDIOMCD"
 if the EATYPES value is "Digital Audio", "WAV", "_AU," "VOC", "AU",
  "SND", "AIF", or "IFF".
 if the extensions listed in the EXTNAME key are each one of "WAV",
  "_AU", "VOC", "AU", "SND", "AIF", or "IFF".

For each Sequencer section, checks:
 if the MCDDRIVER value is "MIDIMCD"
 if the EATYPES value is "MIDI"
 if the EXTNAME key has the value "1,MID"

For each Ampmix section, checks:
 if the MCDDRIVER value is "AMPMXMCD"

For each Overlay section, checks:
 (standard checks only)

For each Animation section, checks:
 (standard checks only)

For each Digitalvideo section, checks:
 if the RESOURCENAME value starts with "VIDEO PLAYER", "OpenMPEG", or "Wcast".
 if the MCDDRIVER value is "SVMC" or "DVMC".
 if the EATYPES value is "Digital Video", "AVI", "FLC/FLI", or "MPEG".
 if the extensions listed in the EXTNAME key are each one of "AVI", "FLC",
  "FLI", "MOV", "QT", "MPG", "VBS", "DAT", "M2P", "CDI", "M2T", or "M1T".

For each Speaker section, checks:
 if the MCDDRIVER value is "AMPMXMCD"

For each Headphone section, checks:
 (standard checks only)

For each Microphone section, checks:
 (standard checks only)

For each Monitor section, checks:
 (standard checks only)

For each CDXA section, checks:
 (standard checks only)

For each Filter section, checks:
 (standard checks only)
 

=============================================================================
PART 2

This section talks about the innards of MMPM2.INI and how to analyze the
report that MM CHECK produces

-----------------------------------------------------------------------------
Do I really need to understand all this?

No.  If you want, you can email the output of MM CHECK (i.e. the file 
MMCHECK.OUT which is most likely in the \MMOS2 directory of your boot
drive) to support@thetaband.com, and we'll examine it for you.  Keep in
mind that support is provided on an as-available basis, and we may need
you to perform certain additional steps to help us track down the 
problem.  In other words, the more you understand, the easier it is for 
us, and the sooner we'll solve your problem.

-----------------------------------------------------------------------------
Ok, so what is the layout of MMPM2.INI?

MMPM2.INI is a plain text file: about 30-50 lines of normal text (letters,
numbers, punctuation), where each line is usually less than 30 characters
long (a couple are up to 90 characters).

The lines are grouped into sections.  Each section starts with a word
inside square brackets, like this:

        [Drivers]

The remaining lines in the section are of the form "A=B,C,D,E,..." like 
this:

        Digitalvideo=IBMDIGVIDPLAYER01,IBMMPEGPLAYER01
        Speaker=SPEAKER
        Headphone=HEADPHONE
        Microphone=MICROPHONE
        Filter=IBMFILTER01,IBMFILTER02,IBMFILTER03

The word to the left of the equal-symbol is the keyword, and the words
to the right of the equal-symbols are called values. There is always at
least one value, and if there are more than one, they are separated by
commas.

Each section represents a different piece of MMPM/2 that needs configuring.
For instance, a section can represent the configuration for playing MIDI
files.  Or it can contain the list of what the default device for each
media type is - if you have two sound cards, which one is normally used?

-----------------------------------------------------------------------------
What do the error messages mean?

For a description of the error messages, please see Part 3


=============================================================================
PART 3

This section describes all the error messages that MMCHECK produces.

There are two types of messages: those that begin with
the word "Error" and those that begin with the word "Warning".

Messages marked with "Error" are known serious problems with MMPM2.INI.
These errors will need to get fixed for OS/2 multimedia to function correctly.

Messages marked with "Warning" are possible problems with MMPM2.INI.  They
could be the result of some special feature of your system that what was
not known to us when MMCHECK was created.  Or, it could be a real error.

In the messages below, the double-underscore __ is replaced with some 
number or word, depending on the error.  Usually, this word is the error
and needs to be changed.

In either case, if you are unable to fully diagnose the error, please email
your MMPM2.INI and the output of MMCHECK to us, at support@thetaband.com.


WARNINGS:

-----------------------------------------------------------------------------
Warning: key PRODUCTINFO has a value of __, but should be "Videodisc"

For the Videodisc device, the PRODUCTINFO key needs to be set to Videodisc.

-----------------------------------------------------------------------------
Warning: key MCDDRIVER has a value of __, but should be AUDIOMCD

For digital audio devices, the MCDDRIVER key needs to be set to AUDIOMCD.

-----------------------------------------------------------------------------
Warning: key MCDDRIVER has a value of __, but should be MIDIMCD

For MIDI devices, the MCDDRIVER key needs to be set to MIDIOMCD.

-----------------------------------------------------------------------------
Warning: key MCDDRIVER has a value of __, but should be AMPMXMCD

For the speaker and ampmix devices (which are mostly internal devices), the 
MCDDRIVER key must have the value AMPMXMCD.

-----------------------------------------------------------------------------
Warning: key MCDDRIVER has a value of __, but should be SVMC or DVMC

For the digital video device, the MCDDRIVER key should be set to either
SVMC or DVMC.  

Note: We believe that SVMC is the driver for single-stream movies and DVMC 
is for dual-stream.  Some MPEG playback cards prefer the video and audio
to be combined into one stream, and some MPEG cards want separate streams.

-----------------------------------------------------------------------------
Warning: key EATYPES has unrecognized value of __

The EATYPES key lists all the Extended Attributes (EA) that are associated 
with the given device.  In this case, the given EA is not recognized and
may be incorrect.  One result of this error is that you can't play certain
types of files even though you know the driver is installed.

-----------------------------------------------------------------------------
Warning: key EATYPES has a value of __, but should be MIDI

For MIDI devices, the only acceptable Extended Attribute is "MIDI".

-----------------------------------------------------------------------------
Warning: key EXTNAMES has unrecognized value of __

The EXTNAMES key lists all the filename extensions (e.g. .WAV, .MID) that are 
associated with the given device.  In this case, the given EA is not 
recognized and may be incorrect.  One result of this error is that you can't 
play certain types of files even though you know the driver is installed.

-----------------------------------------------------------------------------
Warning: key EXTNAMES has a value of __, but should be MID

For MIDI devices, the only acceptable filename extension is .MID

-----------------------------------------------------------------------------
Warning: key RESOURCENAME has unrecognized value of __

For a few devices, the RESOURCENAME key should be set to a specific value.
For the given device, the value it's set to is not recognized.

-----------------------------------------------------------------------------
Warning: unrecognized or duplicate key __

This particular key occurs twice in one section. 

-----------------------------------------------------------------------------
Warning: key SHARETYPE has unrecognized value of __

The SHARETYPE can only be 1, 2, or 3.

-----------------------------------------------------------------------------
Warning: key MCDTABLE has a value of __, but should be MDM

The MCDTABLE key can only have the value of MDM

-----------------------------------------------------------------------------
Warning: key __ has no values

This is a syntax error.  The particular line has a key, but there's nothing
after the equal sign.

-----------------------------------------------------------------------------
Warning: key __ has __ values, but should have at least __

A key can have multiple values.  In this case, the given key needs to have
at least X values, but it has fewer than that.

-----------------------------------------------------------------------------
Warning: key __ has __ values, but should have no more than __

The given key has more values than it should.

-----------------------------------------------------------------------------
Warning: the value for key __ (__) has invalid characters

Certain keys only accept particular characters in their values. For instance,
many keys only accept numbers for values. In this case, the given key has
a value which does not conform.

-----------------------------------------------------------------------------
Warning: the first value for key __ (__) has invalid characters

This is like the previous message, except that this key has multiple values,
and the first one has the invalid character.

-----------------------------------------------------------------------------
Warning: MMBASE environment variable not found.

MMBASE is a system environment value (like PATH and PROMPT) that points to
where MMPM/2 is installed.  If you get this warning, then it means you need
to provide a command-line paramter that says when MMPM2.INI is located.


ERRORS:

-----------------------------------------------------------------------------
Error closing file

For some reason, MMCHECK could not close MMPM2.INI after it finished reading
it.

-----------------------------------------------------------------------------
Error occurred on line __:

Line X has a major syntax error with it.  Your MMPM2.INI is probably 
trashed.

-----------------------------------------------------------------------------
Error: No drivers listed

The [defaults] or [Drivers] section is empty.

-----------------------------------------------------------------------------
Error: Can't find section [__]

The [defaults] or [Drivers] section points to a device that has no entry
in MMPM2.INI.  This is a common problem in bad MMPM2.INI files.

-----------------------------------------------------------------------------
Error: key has __ values, but should only have 1

The [defaults] section lists the default drivers for various devices.  By
definition, there can be only one default.  In this case, the given key 
has multiple values in the [defaults] section.

-----------------------------------------------------------------------------
Error: key __ does not have a matching section __

Some devices are accompanied by two additional sub-devices, called a 
"play device" and a "record device".  This is common with wave audio devices.
In this case, a play device or a record device does not have a matching
"parent" device.  This can happen if you uninstall drivers for a sound
card, since MMPM/2 does not really remove everything from MMPM/2.

-----------------------------------------------------------------------------
Error: there should be only __ DEVICExx keys, but DEVICE__ exists

For play and record devices, there are a number of keys that begin with
"DEVICE", e.g. "DEVICE01", "DEVICE02", etc. The NUMDEVICES key is equal
to the number of DEVICExx keys.  In this case, there is a DEVICExx key
where xx is too big.

-----------------------------------------------------------------------------
Error: key DEVICE__ does not have a matching CONNECTION key

For play and record devices, the DEVICExx and CONNECTIONxx keys come as
matched pairs.  In this case, there is a DEVICExx key (e.g. DEVICE01) but 
no matching CONNECTIONxx key.

-----------------------------------------------------------------------------
Error: there should be only __ CONNECTIONxx keys, but CONNECTION__ exists

For play and record CONNECTIONs, there are a number of keys that begin with
"CONNECTION", e.g. "CONNECTION01", "CONNECTION02", etc. The NUMCONNECTIONS key 
is equal to the number of CONNECTIONxx keys.  In this case, there is a 
CONNECTIONxx key where xx is too big.

-----------------------------------------------------------------------------
Error: key CONNECTION__ does not have a matching DEVICE key

For play and record devices, the DEVICExx and CONNECTIONxx keys come as
matched pairs.  In this case, there is a CONNECTIONxx key (e.g. CONNECTION01) 
but no matching DEVICExx key.

-----------------------------------------------------------------------------
Error: key DEVICE__ should have an AMPMIX value, but has __ instead

The DEVICExx keys should point to an AMPMIX device, e.g. "DEVICE01=AMPMIX02".
Instead, it points to something else.

-----------------------------------------------------------------------------
Error: key DEVICE__ has AMPMIX value, but there are no AMPMIX devices

The DEVICExx keys points to an AMPMIX device, but there are no AMPMIX
devices in MMPM2.INI.  Of course, if there's no AMPMIX device, then
that's a bigger problem.

-----------------------------------------------------------------------------
Error: key DEVICE__ has value of __, but no such AMPMIX device exists

The DEVICExx keys points to an AMPMIX device, but that particular device
doesn't exist.  Typically this means that the number after "AMPMIX" is too
big.

-----------------------------------------------------------------------------
Error: unknown section __

MMCHECK has parsed all sections, and it has found one that doesn't appear
to be used.

-----------------------------------------------------------------------------
Error: key DEVICETYPE has a value of __ but it should be __.

MMPM/2 supports 18 types of devices, and each device listed in MMPM/2
belongs to one of those 18.  In this case, the value of DEVICETYPE for
the given section is wrong.

-----------------------------------------------------------------------------
Error: key EXTNAMES should have __ extensions, but instead has __

The first value of the EXTNAMES key is the number of filename extensions
that belong to this device.  The remaining values are those extensions.
In this case, there is a mismatch.

-----------------------------------------------------------------------------
Error: key NUMDEVICES belongs only in a -PLAY or -RECORD section

The NUMDEVICES key belongs only in a play or record device section.

-----------------------------------------------------------------------------
Error: key NUMCONNECTIONS belongs only in a -PLAY or -RECORD section

The NUMCONNECTIONS key belongs only in a play or record device section.

-----------------------------------------------------------------------------
Error: value for key NUMDEVICES is __, but must be at least 1

The NUMDEVICES key cannot have 0 as a value, i.e. "NUMDEVICES=0" is invalid.

-----------------------------------------------------------------------------
Error: value for key NUMDEVICES is __, but must be no more than __

The maximum value for NUMDEVICES is 32.  This is a limitation of MMCHECK.
If you have a real MMPM2.INI that has more than 32 NUMDEVICES, please 
contact us.

-----------------------------------------------------------------------------
Error: value for key NUMCONNECTIONS is __, but must be at least 1

The NUMCONNECTIONS key cannot have 0 as a value, i.e. "NUMCONNECTIONS=0" is 
invalid.

-----------------------------------------------------------------------------
Error: value for key NUMCONNECTIONS is __, but must be no more than __

The maximum value for NUMCONNECTIONS is 32.  This is a limitation of MMCHECK.
If you have a real MMPM2.INI that has more than 32 NUMCONNECTIONS, please 
contact us.

-----------------------------------------------------------------------------
Error: key __ has __ characters, but should have 8

The DEVICExx key should be 8 characters, i.e. the xx is 2 digits.

-----------------------------------------------------------------------------
Error: key __ has __ characters, but should have 10

The CONNECTIONxx key should be 8 characters, i.e. the xx is 2 digits.

-----------------------------------------------------------------------------
Error: key __ is unknown

For the given section, this particular key is unrecognized.

-----------------------------------------------------------------------------
Error: value for key CLOSEDCAPTION is __, but must either 0 or 1

CLOSEDCAPTION must be set to either 0 or 1 (i.e. OFF or ON)

-----------------------------------------------------------------------------
Error: value for key MASTERVOLUME is __, but must between 0 and 100

All volumes are between 0 and 100.

-----------------------------------------------------------------------------
Error: value for key HEADPHONES is __, but must either 0 or 1

HEADPHONES must be set to either 0 or 1 (i.e. OFF or ON)

-----------------------------------------------------------------------------
Error: value for key SPEAKERS is __, but must either 0 or 1

SPEAKERS must be set to either 0 or 1 (i.e. OFF or ON)

-----------------------------------------------------------------------------
Error: value for key WORKPATH is __, which is not a valid directory

WORKPATH must point to a directory that actually exists.

-----------------------------------------------------------------------------
Error: value for key QOSVALUE is __, but must 65537

The value for QOSVALUE must be 65537

-----------------------------------------------------------------------------
Error: value for key QOSERRORFLAG is __, but must be 2

The value for QOSERRORFLAG must be 2

-----------------------------------------------------------------------------
Error: DEVICExx in section __ is too small (min=1)

The xx in DEVICExx cannot be 0.

-----------------------------------------------------------------------------
Error: DEVICExx in section __ is too large (max=__)

The xx in DEVICExx is too large. The value for key NUMDEVICES is the largest
value for xx.

-----------------------------------------------------------------------------
Error: DEVICExx in section __ is a duplicate

There are two DEVICExx keys in this section that have the same value for xx.

-----------------------------------------------------------------------------
Error: CONNECTIONxx in section __ is too small (max=1)

The xx in CONNECTIONxx cannot be 0.

-----------------------------------------------------------------------------
Error: CONNECTIONxx in section __ is too large (max=__)

The xx in CONNECTIONxx is too large. The value for key NUMDEVICES is the 
largest value for xx.

-----------------------------------------------------------------------------
Error: CONNECTIONxx in section __ is a duplicate

There are two CONNECTIONxx keys in this section that have the same value 
for xx.


=============================================================================

For a list of changes, see HISTORY.TXT on the installation disk.

Please report all bugs to the MMPACK mailing list.  If you are having
problems with the list, please email support@thetaband.com.

Thank you for your support.  We look forward to enhancing MM CHECK
to meet your requirements.

Theta Band Software
http://www.thetaband.com
