Follow these guidelines to author device-independent MIDI files for Windows:
Author for both base-level and extended synthesizer setups.
Use MIDI channels 13 through 16 for base-level synthesizer data (reserve channel 16 for key-based percussion instruments).
Use MIDI channels 1 through 10 for extended synthesizer data (reserve channel 10 for key-based percussion instruments).
Prioritize MIDI data by putting crucial data in the lower-numbered channels.
Limit the polyphony of non-percussive channels to a total of 6 notes for base-level data and 16 notes for extended data.
Limit the polyphony of percussive channels to a total of 3 notes for base-level data and 16 notes for extended data.
Use the standard MIDI patch assignments and key assignments.
Always send a program-change message to a channel to select a patch before sending other messages to that channel. For the two percussion channels (10 and 16), select program number 0.
Always follow a MIDI program-change message with a MIDI main-volume-controller message (controller number 7) to set the relative volume of the patch.
Use a value of 80 (0x50) for the main volume controller for normal listening levels. For quieter or louder levels, you can use lower or higher values.
Use only the following MIDI messages: note-on with velocity, note-off, program change, pitch bend, main volume (controller 7), and damper pedal (controller 64). Internal synthesizers are required to respond to these messages and most MIDI musical instruments will respond to them as well.
Use the MARKMIDI utility to mark MIDI files authored for Windows.
The following illustration summarizes the use of the 16 MIDI channels in a standard MIDI file authored for Windows:
This illustration is not available for this release
Synthesizers don't always fall cleanly into the base-level and extended designations defined earlier. It's up to the end-user to determine how to use synthesizers capable of more than the base-level requirements, but not fully meeting the extended requirements. For this reason, it's important to prioritize the melodic data by putting the most critical data in lower-numbered channels. For example, a user may have a synthesizer capable of playing six melodic instruments with 12-note polyphony. The user can use this device as an extended synthesizer by setting up the MIDI Mapper to play only the first six melodic channels and ignore any information on channels seven, eight, and nine.