Official MIDI Specifications


The following changes/additions became part of the MIDI 1.0 Specification after the "96.1" publication and should be consulted to have a current understanding of MIDI technology.
This revised version of the standard MIDI Implementation Chart is designed as a quick reference guide that allows users to identify at a glance which MIDI messages and functions are implemented by the device. In this document, the term 'device' is defined as a hardware device or software program that (a) transmits and/or receives MIDI messages, and/or (b) reads and/or writes MMA- defined file formats. Use of the V2 MIDI Implementation Chart is optional. The standardization of this chart enables a user to judge the compatibility between two devices to be connected, simply by comparing the “Transmit/Export” column of one device with the “Recognize/Import” column of the other. For this reason, each chart should be the same size and should have the same number of lines if at all possible. This chart has been designed to fit both standard A4 and 8 1/2” x 11” paper. If a smaller page size is required for a particular product, page breaks may be inserted as necessary, but it is strongly recommended to maintain the row height of the original chart, in order to facilitate comparisons.

Due to the fact that so many manufacturers use Control Change #91 and #93 in the same way, they should be renamed according to their common usage.

Details: Sets Control Function names as follows:

CC# (hex) [Old Name] [New Name]
91 (5BH) [Effect 1 Depth] Reverb Send Level
93 (5DH) [Effect 3 Depth] Chorus Send Level

The actual response is dependent on a formal R/P such as General MIDI Level 2 Recommended Practice.

CC # 70 through 79 are defined as Sound Controllers. Some have default names, and some are left undefined.
Control Change (CC) #75-78 (Sound Controllers 6-9) have been given default names.
This is a recommendation for expected response to Data Increment (MIDI controller #96) and Data Decrement (MIDI controller #97) MIDI messages.

Defines a consistent reponse to the Reset All Controllers Channel Mode message (#121)
This message allows computer based MIDI devices to access files on a shared file system or network using a URL-style file specification. It allows the sounds in these files to be played using simple MIDI messages.

Because of the nature of computer-based MIDI devices and their ability to directly (or indirectly, through software drivers) access files on a shared file system or network, a file reference mechanism using URL-style file names allows these devices to optimally load sounds without transferring the file contents over MIDI. Additionally, the existence of standard URL managers on newer operating systems allows MIDI device manufacturers to implement this file reference mechanism easily to enable such features as DLS file loading and WAV file loading using existing MIDI sequencers and software.

The DLS Level 1 specification does not provide an API definition, and currently no operating system vendors have implemented one. Even though DLS APIs have been promised by OS vendors, their delivery has been repeatedly delayed and their use will require existing MIDI software to be rewritten. Proprietary APIs have been developed by some manufacturers, but these do not address the broad needs of the industry by providing a consistent delivery mechanism for downloadable sounds. Because DLS file loading is really a subset of the generic concept of file loading, it is simpler to provide a file reference mechanism that can be used for DLS file loading as well as other file types like WAV files, SoundFont files or other file types.

This solution adds a new MIDI system exclusive non-realtime message to the MIDI specification. This message is intended to be used for the purpose of loading sound files from a shared file system or network, and playing them using standard MIDI channel events (program change, note events, continuous controllers, etc.). The message consists of a URL-based file name and a set of file type parameters.
This specification defines MIDI Registered Parameter Number (RPN) controllers corresponding to the parameters that would be involved in order to allow synthesizers to render MIDI in 3D, and to allow content authors to create compelling 3D MIDI sequences.
Defines MIDI Continuous Controller 88 (58H) as High Resolution Velocity Prefix to the subsequent Note On / Note Off message.

High Resolution Velocity Prefix is intended to improve Note On/Off Velocity resolution while keeping compatibility with older instruments. High Resolution Velocity Prefix is intended to be used when 7-bit Note On / Note Off velocity resolution is not enough. In conjunction with this message, 14-bit resolution can be achieved.
Over the course of the development of MIDI, different manufacturers have implemented their own responses to CC#10. In addition, various AMEI/MMA Specification (such as GM2 and DLS2) have recommended response curves that are not all the same. The different pan curves produce an equal power distribution between the left and right channels, but in some cases, a true center could not be achieved by following the recommended equation directly.

The formula in this RP does achieve a true center and uses an equal power distribution, which is desirable.
This is an extension to the File Reference SysEx message (“CA-018”) providing a means of offsetting the mapping information in a DLS file by a MIDI bank index offset.