8,720
edits
Changes
MIDI
,no edit summary
{{Recording Crumbs|9}}
== Structure of MIDI Information ==
=== Channels ===
Every MIDI link can carry up to 16 different '''channels''' of data. Each device typically "listens" and "speaks" on only one of these channels. This allows MIDI data to be sent along a common cable chain through many devices while targeting different messages for different devices, avoiding the use of patch bays and manually managing loops/sends between devices.
=== Messages ===
MIDI sends all its information as '''messages''', which are composed of multiple MIDI bytes. A normal byte is 8-bits, but a MIDI byte is 10-bits, comprised of a start/stop bit, a type bit, and a 7 bit value. The type bit indicates whether the byte is a status byte or data byte. A typical MIDI message is composed of a status byte to indicate what type of message it is followed by 1-2 data bytes. MIDI messages can be one of the 5 types below, which are further broken down.
==== Channel Voice ====
==== Channel Mode ====
'''Channel Mode''' messages are designed to change the way devices respond to processing channel data. It can switch devices from listening to a single channel (Omni Off) vs. all channels (Omni On). It can also send note-off or reset to default messages to all controllers.
==== System Common ====
'''System Common''' messages are used to send system data that has no channel number and is sent to all devices.
==== System Real-Time ====
'''System Real-Time''' messages carry real-time system information like the MIDI clock, and active sensing which is used to ensure devices are still online.
==== System Exclusive ====
'''System Exclusive''' or ''SysEx'' messages are proprietary formats that manufacturers develop to communicate with their hardware in a way that other MIDI defined messages cannot provide. For example, standard MIDI CC messages only provide a range of 128 different parameters to target. Some devices feature thousand of parameters. SysEx allows messages to have larger data sizes, increasing the number of parameters and/or the resolution of the values. Or it could specify other formats, such as transmitting text or even more advanced data structures.
The SysEx format includes a unique ID to ensure the messages only communicate with compatible devices.
=== General MIDI ===
'''General MIDI''' or '''GM''' is a standard, that consists of multiple parts.
* Common program numbers for specific instrument sounds
=== Roland GS ===
Roland implemented their own extension to GM in '''GS'''. It includes:
* Includes bank select support allowing simultaneous banks of programs
=== General MIDI Level 2 ===
'''General MIDI Level 2''' or '''GM2''' reconciled competing proprietary extensions to GM. It also included a number of additional standards to extend even further.
* Includes bank select support allowing simultaneous banks of programs
