Microsoft KB Archive/141087

-

The information in this article applies to:


 * Microsoft Win32 Software Development Kit (SDK), version 3.5

-

SUMMARY
The Win32 SDK multimedia documentation refers to the MarkMIDI utility in the following topics:

Using the MARKMIDI Utility Using the MCI MIDI Sequencer with High-Level Audio Authoring Guidelines for MIDI Files

However, this utility is not provided in the Win32 SDK.

MORE INFORMATION
Due to advances in the MIDI capabilities of PC sound cards and MIDI synthesizers and in particular support for the General MIDI Level 1 specification, the authoring of MIDI files according to the old Microsoft Windows 3.1 SDK Authoring Guidelines for MIDI Files is no longer recommended. Thus, the purpose for which MarkMIDI was designed (to set a flag in the header of such files) is no longer required. Also, the incorrect use of this utility can degrade the playback quality of MIDI files authored according to the General MIDI (GM) specification. Therefore it was decided to no longer include this utility in the Win32 SDK.

The information in the Win32 SDK topics regarding authoring MIDI files is obsolete information from the Windows 3.1 SDK documentation. It should be followed only if there is some special reason to author a file according to the old Windows 3.1 guidelines. In general, however, only GM files (or extensions to GM such as Roland's GS or Yamaha's XG specification) should be authored, and for these files the MarkMIDI utility must not be used.

MIDI files authored according to the old Windows 3.1 guidelines have MIDI data on channels 1 through 10, with channel 10 being percussion, and important MIDI data is duplicated on Channels 11 through 16, with 16 being percussion. For such files, the MarkMIDI utility from the Windows 3.1 SDK absolutely must be used to mark the files. The MCI sequencer (Mciseq.drv) checks for the flag set by MarkMIDI so that it knows to play back only MIDI channels 1 through 10. Without the flag, all 16 channels are played back as GM, and track 16 plays back incorrectly.

Most synthesizers and PC sound cards now support GM, which provides better sound quality than is derived from files authored according to the old Windows 3.1 guidelines. In general, there should be no reason to author MIDI files with MarkMIDI according to the old Windows 3.1 guidelines.

If a MIDI file authored according to the old Windows 3.1 guidelines is not marked, it will sound bad when played with the MCI sequencer on Windows 95. For example, if such a file included percussion on channel 16, all of that channel's data would probably be played with some instrumental sound other than percussion, and the result would be non-musical. Also, if a GM file has been marked, the MCI sequencer will only play channels 1 through 10. In that case, any MIDI data sent to channels 11 through 16 will not be heard.