New Immissions/Updates:
boundless - educate - edutalab - empatico - es-ebooks - es16 - fr16 - fsfiles - hesperian - solidaria - wikipediaforschools
- wikipediaforschoolses - wikipediaforschoolsfr - wikipediaforschoolspt - worldmap -

See also: Liber Liber - Libro Parlato - Liber Musica  - Manuzio -  Liber Liber ISO Files - Alphabetical Order - Multivolume ZIP Complete Archive - PDF Files - OGG Music Files -

PROJECT GUTENBERG HTML: Volume I - Volume II - Volume III - Volume IV - Volume V - Volume VI - Volume VII - Volume VIII - Volume IX

Ascolta ""Volevo solo fare un audiolibro"" su Spreaker.
CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
Musical Instrument Digital Interface - Wikipedia, the free encyclopedia

Musical Instrument Digital Interface

From Wikipedia, the free encyclopedia

Note names and MIDI note numbers.
Note names and MIDI note numbers.

MIDI (Musical Instrument Digital Interface) is an industry-standard electronic communications protocol that enables electronic musical instruments, computers and other equipment to communicate, control and synchronize with each other in real time. MIDI does not transmit an audio signal or media — it simply transmits digital data "event messages" such as the pitch and intensity of musical notes to play, control signals for parameters such as volume, vibrato and panning, cues and clock signals to set the tempo. As an electronic protocol, it is notable for its success, both in its widespread adoption throughout the industry, and in remaining essentially unchanged in the face of technological developments since its introduction in 1983. Also see: Category:MIDI standards

Contents

[edit] Overview

[edit] History

By the end of the 1970s, electronic musical devices were becoming increasingly common and affordable. However, devices from different manufacturers were generally not compatible with each other and could not be interconnected. Different interfacing models included:

  • analog control voltages at various standards (such as 1 volt per octave, or the logarithmic "hertz per volt")
  • analog clock, trigger and "gate" signals (both positive "V-trig" and negative "S-trig" varieties, between -15V to +15V)
  • proprietary digital interfaces such as Roland Corporation's DCB (digital control bus) and Yamaha's "keycode" system.

In an attempt to find a way forward from this situation, audio engineer and synthesizer designer Dave Smith of Sequential Circuits, Inc. proposed the MIDI standard in 1981 in a paper to the Audio Engineering Society. The proposal received widespread enthusiasm within the industry, and the MIDI Specification 1.0 was published in August 1983. Today, Dave Smith is generally regarded as the "Father of MIDI" and MIDI technology has been standardized and is maintained by the MIDI Manufacturers Association (MMA).

[edit] Overview

All official MIDI standards are jointly developed and published by the MIDI Manufacturers Association (MMA) in Los Angeles, California, USA (http://www.midi.org), and for Japan, the MIDI Committee of the Association of Musical Electronic Industry (AMEI) in Tokyo (http://www.amei.or.jp). The primary reference for MIDI is The Complete MIDI 1.0 Detailed Specification, document version 96.1, available only directly from MMA in English, or from AMEI in Japanese.

The MIDI Show Control (MSC) protocol (in the Real Time System Exclusive subset) is an industry standard ratified by the MIDI Manufacturers Association in 1991 which allows all types of media control devices to talk with each other and with computers to perform show control functions in live and canned entertainment applications. Just like musical MIDI (above), MSC does not transmit the actual show media — it simply transmits digital data providing information such as the type, timing and numbering of technical cues called during a multimedia or live theatre performance.

Almost all music recordings today utilize MIDI as a key enabling technology for recording music. In addition, MIDI is also used to control hardware including recording devices as well as live performance equipment such as stage lights and effects pedals.

MIDI allows computers, synthesizers, MIDI controllers, sound cards, samplers and drum machines to control one another, and to exchange system data. Though modern computer sound cards are MIDI-compatible and capable of creating realistic instrument sounds, the fact that sound cards' MIDI synthesizers have historically produced sounds of dubious quality has tarnished the image of a computer as a MIDI instrument. In fact, the MIDI specification itself has nothing to do with the quality of sound produced - this varies depending on the quality of sound card and/or samples used.

MIDI was a major factor in bringing to an end to the "wall of synthesizers" phenomenon in 1970s-80s rock music concerts, when keyboard instrument performers were sometimes hidden behind banks of various instruments. Following the advent of MIDI, many synthesizers were released in rack-mount versions, enabling performers to control multiple instruments from a single keyboard. Another important effect of MIDI has been the development of hardware and computer-based sequencers, which can be used to record, edit and play back performances.

Synchronization of MIDI sequences is made possible by the use of MIDI timecode, an implementation of the SMPTE time code standard using MIDI messages, and MIDI timecode has become the standard for digital music synchronization.

A number of music file formats have been based on the MIDI bytestream. These formats are very compact; a file as small as 10 KB can produce a full minute of music. This is advantageous for applications such as mobile phone ringtones, and some video games.

The term "MIDI sound" has often been used as a synonym for "bad sounding computer music", but this reflects a misunderstanding: MIDI does not define the sound, only the control protocol. The confusion has probably arisen because the quality of the General MIDI synthesis software and instrument banks included with some personal computers in the 1980's and 1990's could, perhaps, have been a little better.

[edit] MIDI interfaces

All MIDI In and MIDI Out connectors are part of a MIDI interface. A MIDI interface moves internal binary data to the MIDI Out connector for transmission to another device's MIDI In connector, in MIDI message form. It also receives incoming MIDI messages arriving on the MIDI In connector (from another device's MIDI Out connector) into internal binary data. All MIDI compatible instruments have a built-in MIDI interface. Some computers' sound cards have a built-in MIDI Interface, whereas others require an external MIDI Interface which is usually connected to the computer via USB or FireWire.

[edit] MIDI message interoperability

All MIDI compatible controllers, musical instruments, and MIDI-compatible software follow the same MIDI 1.0 specification, and thus interpret any given MIDI message the same way, and so can communicate with and understand each other. For example, if a note is played on a MIDI controller, it will sound at the right pitch on any MIDI instrument whose MIDI In connector is connected to the controller's MIDI Out connector.

[edit] How MIDI channel messages work

When a musical performance is played on an MIDI instrument (or controller) it transmits MIDI channel messages from its MIDI Out connector. A typical MIDI channel message sequence corresponding to a key being struck and released on a keyboard is:

  1. The user presses the middle C key with a specific velocity (which is usually translated into the volume of the note but can also be used by the synthesiser to set the timbre as well). ---> The instrument sends one Note On message.
  2. The user changes the pressure applied on the key while holding it down - a technique called aftertouch (can be repeated, optional). ---> The instrument sends one or more Aftertouch messages.
  3. The user releases the middle C key, again with the possibility of velocity of release controlling some parameters. ---> The instrument sends one Note Off message.

Note On, Aftertouch, and Note Off are all channel messages. For the Note On and Note Off messages, the MIDI specification defines a number (from 0-127) for every possible note pitch (C, C#, D, etc.), and this number is included in the message. For example, the Middle C note played on any MIDI compatible musical instrument will always transmit the same MIDI channel message from its MIDI Out connector.

Other performance parameters can be transmitted with channel messages, too. For example, if the user turns the pitch wheel on the instrument, that gesture is transmitted over MIDI using a series of Pitch Bend messages (also a channel message). The musical instrument generates the messages autonomously; all the musician has to do is play the notes (or make some other gesture that produces MIDI messages). This consistent, automated abstraction of the musical gesture could be considered the core of the MIDI standard.

[edit] How MIDI Show Control works

Main article: MIDI Show Control.

When any cue is called by a user (typically a Stage Manager) and/or preprogrammed timeline in a show control software application, the show controller transmits one or more Real Time System Exclusive messages from its 'MIDI Out' port. A typical MSC message sequence is:

  1. the user just called a cue
  2. the cue is for lighting device 3
  3. the cue is number 45.8
  4. the cue is in cue list 7

[edit] The MIDI 1.0 Protocol

IMPORTANT: Some of the information in this section diverges from the official MMA/AMEI MIDI specifications in terminology and in technical detail. Developers interested in maximizing interoperability are encouraged to work directly from the official MMA/AMEI specifications.

There are two sides to MIDI 1.0: the hardware transport specification describing the electrical and mechanical connection, and the message format specification.

[edit] Hardware Transport (Electrical and Mechanical Connections)

MIDI ports and cable.
MIDI ports and cable.

The MIDI standard consists of a communications messaging protocol designed for use with musical instruments, as well as a physical interface standard. It consists physically of a one-way (simplex) digital current loop serial communications electrical connection signaling at 31,250 bits per second. One start bit (must be 0), eight data bits, no parity bit and one stop bit (must be 1) is used.

Only one end of the loop is referenced to ground, with the other end "floating", to prevent ground loops which may otherwise cause interference and hum in analog audio signals. The current loop on the transmitter side drives the LED of an opto-coupler on the receiver side. This means the devices are, in fact, optically isolated. The opto-coupler must be a high-speed type. As most opto-couplers have asymmetrical positive-going and negative-going slew rates, they slightly alter the signal's duty cycle. If several MIDI devices are connected in series by daisy-chaining the MIDI THRU to the next device's MIDI-IN, the signal gets more and more distorted, until receive errors occur due to pulse narrowing.

MIDI connectors are standard 5-pin 180° DIN connectors which at one time were a de facto European standard for audio interconnection. Over time the simpler American RCA phono jack has left MIDI as the only place where DIN is commonly encountered in modern equipment. Standard size DIN connectors were also used for computer keyboard connections from the early 80s through the late 90s and have generally been replaced by mini-DIN connectors, and more recently by USB connectors.

Some computers or their sound cards have 15-pin D-subminiature connectors, called game ports, that can be used for MIDI IN/MIDI OUT. The connector supports both MIDI and analog joystick functions. Access to the MIDI signals is provided by a short adapter cable that converts the D-subminiature pinout into DIN connectors. The recommended method of connecting two 5-pin DIN cables to a 15-pin D-subminiature computer port can be found at the MIDI.org web site. The MIDI specification very conservatively states that the maximum distance MIDI can be transmitted is 15 meters (50 feet), but it can normally go much further.

There is a USB connection standard and a standard for MIDI over Ethernet and Internet called RTP MIDI being developed by the IETF. See external links below for further information.

Most MIDI capable instruments feature a MIDI IN, MIDI OUT, and occasionally a MIDI THRU connection in the form of five-pin DIN connectors. In order to build a two-way physical connection between two devices, a pair of cables must be used. The MIDI THRU jack simply echoes the signal entering the device at MIDI-IN. This makes it possible to control several devices from a single source.

The 1985 Atari ST was the first home computer to sport the original five-pin DIN format, making it a very popular platform for running MIDI sequencer software. Most PC soundcards from the late 1990s had the ability to terminate a MIDI connection, usually through a MIDI IN/MIDI OUT converter on the game port. The game port has been supplanted in the modern PC by USB devices, and so typically a PC owner will need to purchase a MIDI interface that attaches to the USB or FireWire port of their machine to use MIDI.

[edit] Message Format

Every MIDI connection is a one-way connection from the MIDI Out connector of the sending device to the MIDI In connector of the receiving device. Each such connection can carry a stream of MIDI messages, with most messages representing a common musical performance event or gesture such as note-on, note-off, controller value change (including volume, pedal, modulation signals, etc.), pitch bend, program change, aftertouch, channel pressure. All of those messages include channel number. There are 16 possible channels in the protocol. The channels are used to separate "voices" or "instruments", somewhat like tracks in a multi-track mixer.

The ability to multiplex 16 "channels" onto a single wire makes it possible to control several instruments at once using a single MIDI connection. When a MIDI instrument is capable of producing several independent sounds simultaneously (a multitimbral instrument), MIDI channels are used to address these sections independently. (This should not be confused with "polyphonic"; the ability to play several notes simultaneously in the same "voice".)

In more detail, MIDI 1.0 defines several basic message types of channel messages:

  • Note messages can represent any note from '''C (i.e. five octaves below middle C or 8.176 Hz in common Western musical tuning; designated as MIDI note 0) to g'''''' (i.e. five octaves above the G above middle C or 12,544 Hz; designated as MIDI note 127) with precision down to the semitone. A note on message starts a note, and separate note off message is needed to end it.
  • Pitch-bend messages range in ±2 semitones (sometimes adjustable with Registered Parameter Numbers), with precision of 1/8192 semitone (The human ear cannot hear the difference between adjacent pure tones that differ by less than 1/20 semitone). Most synthesizers allow you to adjust the pitch bend range over several octaves.
  • "Control Change" messages (frequently wrongly called Continuous Controller) are quite versatile; they are usually generated by a musician using knobs, sliders, footswitches, or pressure on a physical MIDI controller (or MIDI-equipped instrument). While the response to these messages is generally totally up to the receiving device, they are typically used to change the tone, timbre, or volume of an instrument's sound. In non-musical applications of MIDI, Control Change messages can be used to move motorized faders, to dim lights, or even to move a motorized joint in an animatronic figure.
  • Program change messages are sent to an instrument on a particular channel to instruct it to recall another patch, or program. The MIDI protocol uses 7 bits for this message, supporting only 128 program changes. Many devices which are more modern than the MIDI specification store far more than 128 programs. To overcome the limitation, a bank-switching method has been added to the spec (Each bank of 127 programs can be selected using a controller message, enabling access to 127² = 16129 programs).
  • Aftertouch messages (also known as Poly Pressure messages) are sent in some instruments to indicate pressure changes on the note while it is being played. Similarly, channel pressure changes the pressure for the entire instrument, not just one note. The channel pressure messages are more commonly implemented in most synthesizers, while the individual pressure sensors that aftertouch messages require are reserved mainly for expensive, high-end synthesizers.


In addition to the channel-based messages, there are system-related messages not addressed to any particular channel. These include:

  • Manufacturer's System Exclusive messages (also known as Manufacturer SysEx, Manuf Sysx, etc.) are defined by the manufacturer of the sequencer/synthesizer and can be any length. These messages are commonly used to send non-MIDI data over a MIDI connection, such as a synthesizer instrument sample or settings and a sequencer's memory dump. Because they are defined by the device's manufacturer, they are mainly used for backup purposes and rarely (if ever) useful in another MIDI device.
  • Real Time System Exclusive messages include the significant MIDI Show Control extension which enables all types of entertainment equipment to easily communicate with each other through the process of show control.
  • System messages contain meta-data about other MIDI messages. A sequencer, for example, often sends MIDI clock messages during playback that correspond to the MIDI timecode, so the device receiving the messages (usually a synthesizer) will be able to keep time. Also, some devices will send Active Sense messages, used only to keep the connection between the sender and the receiver alive after all MIDI communication has ceased.

MIDI can be used to provide facilities for playing in musical tunings different from the 12 tone per octave, equal-tempered tuning used in most western musical traditions. However, apart from using pitch-bend to control each note, these features have not been implemented by all instrument manufacturers.

[edit] Low bandwidth

MIDI messages are extremely compact, due to the low bandwidth of the connection, and the need for real-time accuracy. Most messages consist of a status byte (channel number in the low 4 bits, and an opcode in the high 4 bits), followed by one or two data bytes. However, the serial nature of MIDI messages means that long strings of MIDI messages take an appreciable time to send, at times even causing audible delays, especially when dealing with dense musical information or when many channels are particularly active.

To further optimize the data stream, "Running status", a convention that allows the status byte to be omitted if it would be the same as that of the previous message, helps to mitigate bandwidth issues somewhat.

[edit] MIDI file formats

[edit] Standard MIDI File (SMF) Format

MIDI messages (along with timing information) can be collected and stored in a computer file system, in what is commonly called a MIDI file, or more formally, a Standard MIDI File (SMF). The SMF specification was developed by, and is maintained by, the MIDI Manufacturers Association (MMA). MIDI files are typically created using desktop/laptop computer-based sequencing software (or sometimes a hardware-based MIDI instrument or workstation) that organizes MIDI messages into one or more parallel "tracks" for independent recording and editing. In most but not all sequencers, each track is assigned to a specific MIDI channel and/or a specific General MIDI instrument patch. Although most current MIDI sequencer software uses proprietary "session file" formats rather than SMF, almost all sequencers provide export or "Save As..." support for the SMF format.

An SMF consists of one header chunk and one or more track chunks. There are three SMF formats; the format is encoded in the file header. Format 0 contains a single track and represents a single song performance. Format 1 may contain any number of tracks, enabling preservation of the sequencer track structure, and also represents a single song performance. Format 2 may have any number of tracks, each representing a separate song performance. Sequencers do not commonly support Format 2.

Large collections of SMFs can be found on the web, most commonly with the extension .mid. These files are most frequently authored with the assumption that they will be played on General MIDI players.

[edit] MIDI Karaoke File (.KAR) Format

MIDI-Karaoke (which uses the ".kar" file extension) files are an "unofficial" extension of MIDI files, used to add synchronized lyrics to standard MIDI files. SMF players play the music as they would a .mid file but do not display these lyrics unless they have specific support for .kar messages. These often display the lyrics synchronized with the music in "follow-the-bouncing-ball" fashion, essentially turning any PC into a karaoke machine.

MIDI-Karaoke file formats are not maintained by any standardization body.

[edit] XMF File Formats

The MMA has also defined (and AMEI has approved) a new family of file formats, XMF (eXtensible Music File), some of which package SMF chunks with instrument data in DLS format (Downloadable Sounds, also an MMA/AMEI specification), to much the same effect as the MOD file format. The XMF container is a binary format (not XML-based, although the file extensions are similar).

[edit] RMI File Format

On Microsoft Windows, the system itself uses RIFF-based MIDI files with the .rmi extension. Note, Standard MIDI Files per se are not RIFF-compliant. An RMI file, however, is basically an SMF wrapped in a RIFF header. If the RIFF header is thrown away, the result should be a regular SMF.

The RMI file format is not maintained by any standardization body.

[edit] MIDI usage and applications

[edit] Extensions of the MIDI standard

Many extensions of the original official MIDI 1.0 spec have been standardized by MMA/AMEI. Only a few of them are described here; for more comprehensive information, see the MMA web site.

[edit] General MIDI

The General MIDI (GM) and General MIDI 2 (GM2) standards define a MIDI instrument's response to the receipt of a defined set of MIDI messages. As such, they allow a given, conformant MIDI stream to be played on any conformant instrument. Although dependent on the basic MIDI 1.0 specification, the GM and GM2 specifications are each separate from it. As such, it is not generally safe to assume that any given MIDI message stream or MIDI file is intended to drive GM-compliant or GM2-compliant MIDI instruments.

At heart, these specifications resolve certain ambiguities in the MIDI message protocol. In MIDI, instruments (one per channel) are selected by number (0-127), using the Program Change message. However, the basic MIDI 1.0 specification did not specify what instrument sound (piano, tuba, etc.) corresponds to each number. This was intentional, as MIDI originated as a professional music protocol, and in that context it is typical for a performer to assemble a custom palette of instruments appropriate for their particular repertoire, rather than taking a least-common-denominator approach.

Eventually interest developed in adapting MIDI as a consumer content format, and for computer multimedia applications. In this context, in order for MIDI file content to be portable, the instrument program numbers used must call up the same instrument sound on every player. General MIDI (GM) was an attempt by the MIDI Manufacturers' Association (MMA) to resolve this problem by standardising an instrument programme number map, so that for example Program Change 1 always results in a piano sound on all GM-compliant players. GM also specified the response to certain other MIDI messages in a more controlled manner than the MIDI 1.0 specification. The GM spec is maintained and published by the MIDI Manufacturers' Association (MMA).

From a musical perspective, GM has a mixed reputation, mainly because of small or large audible differences in corresponding instrument sounds across player implementations, the limited size of the instrument palette (128 instruments), its least-common denominator character, and the inability to add customised instruments to suit the needs of the particular piece. Yet the GM instrument set is still included in most MIDI instruments, and from a standardisation perspective GM has proven durable.

Genreal Midi 1 was introduced in 1991.

[edit] General MIDI 2

Later, companies in Japan's Association of Musical Electronics Industry (sic) (AMEI) developed General MIDI Level 2 (GM2), incorporating aspects of the Yamaha XG and Roland GS formats, extending the instrument palette, specifying more message responses in detail, and defining new messages for custom tuning scales and more. The GM2 specs are maintained and published by the MMA and AMEI.

General MIDI 2 was introduced in 1992.

[edit] SP-MIDI

Later still, GM2 became the basis of the instrument selection mechanism in Scalable Polyphony MIDI (SP-MIDI), a MIDI variant for mobile applications where different players may have different numbers of musical voices. SP-MIDI is a component of the 3GPP mobile phone terminal multimedia architecture, starting from release 5.

GM, GM2, and SP-MIDI are also the basis for selecting player-provided instruments in several of the MMA/AMEI XMF file formats (XMF Type 0, Type 1, and Mobile XMF), which allow extending the instrument palette with custom instruments in the Downloadable Sound (DLS) formats, addressing another major GM shortcoming.

[edit] Alternate Hardware Transports

In addition to the original 31.25 kBaud current-loop, 5-pin DIN transport, transmission of MIDI streams over USB, IEEE 1394 AKA FireWire, and ethernet is now common. Perhaps in the long run the IETF's RTP MIDI specification for transport of MIDI streams over ethernet and internet may completely supersede the original DIN transport, since RTP MIDI is capable of providing the high-bandwidth channel that earlier alternatives to MIDI (such as ZIPI) were intended to bring. See external links below for further information.

[edit] Alternate Tunings

By convention, instruments that receive MIDI generally use the conventional 12-pitch per octave equal temperament tuning system. Unfortunately this tuning system makes many types of music inaccessible because the music depends on a different intonation system. To address this issue in a standardized manner, in 1992 the MMA ratified the MIDI Tuning Standard, or MTS. This standard allow MIDI instruments that support MTS to be tuned in any way desired, through the use of a MIDI Non-Real Time System Exclusive message.

MTS uses three bytes, which can be thought of as a three-digit number base 128, to specify a pitch in logarithmic form. The following formula gives the byte values needed to encode a given frequency in Hertz:

p = 69 + 12\times\log_2 { \left(\frac {f}{440} \right) }

For a note in A440 equal temperament, this formula delivers the standard MIDI note number. Any other frequencies fill the space evenly.

While support for MTS is not particularly widespread in commercial hardware instruments, it is nonetheless supported by some instruments and software, for example the free software programs Timidity and Scala (program), as well as other microtuners.

[edit] Other applications of MIDI

MIDI is also used every day as a control protocol in applications other than music, including:

Such non-musical applications of MIDI are possible because any device built with a standard MIDI Out connector should in theory be able to control any other device with a MIDI In port, just as long as the developers of both devices have the same understanding about the semantic meaning of all the MIDI messages the sending device emits. This agreement can come either because both follow the published MIDI specifications, or else in the case of any non-standard functionality, because the message meanings are agreed upon by the two manufacturers.

[edit] MIDI controllers which are hardware and software

Note: The term MIDI controller is used in two different ways. (1) In one sense, a MIDI controller is a hardware or software entity able to transmit MIDI messages via a MIDI Out connector to other devices with MIDI In connectors. (2) In the other (more technical) sense, a MIDI controller is any parameter in a device with a MIDI In connector that can be set with the MIDI Control Change message. For example, a synthesizer may use controller number 18 for a low-pass filter's frequency; to open and close that filter with a physical slider, a user would assign the slider to transmit controller number 18. Then, all changes in the slider position will be transmitted as MIDI Control Change messages with the controller number field set to 18; when the synthesizer receives the messages, the filter frequency will change accordingly.

The following are classes of MIDI controller (using definition 1 above):

  • The human interface component of a traditional instrument redesigned as a MIDI input device. The most common type of device in this class is the keyboard controller. Such a device provides a musical keyboard and perhaps other actuators (pitch bend and modulation wheels, for example) but produces no sound on its own. It is intended only to drive other MIDI devices. Percussion controllers such as the Roland Octapad fall into this class, as do guitar-like controllers such as the SynthAxe and a variety of wind controllers.
  • Pitch-to-MIDI converters including guitar/synthesizers analyze a pitch and convert it into a MIDI signal. There are several devices which do this for the human voice and for monophonic instruments such as flutes, for example.
  • Traditional instruments such as drums, pianos, and accordions which are outfitted with sensors and a computer which accepts input from the sensors and transmits real-time performance information as MIDI data.
  • Sequencers, which store and retrieve MIDI data and send the data to MIDI enabled instruments in order to reproduce a performance.
  • MIDI Machine Control (MMC) devices such as recording equipment, which transmit messages to aid in the synchronization of MIDI-enabled devices. For example, a recorder may have a feature to index a recording by measure and beat. The sequencer that it controls would stay synchronized with it as the recorder's transport controls are pushed and corresponding MIDI messages transmitted.

[edit] MIDI controllers in the data stream

Note: The term MIDI controller is used in two different ways. (1) In one sense, a MIDI controller is a hardware or software entity able to transmit MIDI messages via a MIDI Out connector to other devices with MIDI In connectors. (2) In the other (more technical) sense, a MIDI controller is any parameter in a device with a MIDI In connector that can be set with the MIDI Control Change message. For example, a synthesizer may use controller number 18 for a low-pass filter's frequency; to open and close that filter with a physical slider, a user would assign the slider to transmit controller number 18. Then, all changes in the slider position will be transmitted as MIDI Control Change messages with the controller number field set to 18; when the synthesizer receives the messages, the filter frequency will change accordingly.

This section uses the second definition of "MIDI controller".

Performance modifier controls such as modulation wheels, pitch bend wheels, sustain pedals, pitch sliders, buttons, knobs, faders, switches, ribbon controllers, etc., can alter an instrument's state of operation, and thus can be used to modify sounds or other parameters of music performance. Because MIDI includes messages for representing such controller events, they can be sent in real time over MIDI connections. MIDI makes approximately 120 virtual controller numbers (addresses) available for this purpose, i.e. connecting the actual buttons, knobs, wheels, sliders, etc. with their intended actions within the receiving device. In MIDI, the value data range of the Control Change message is 128 steps (0 to 127), and the first 32 controller numbers (including, for example, Volume) are allocated an additional 7 bits of "Least Significant Bits" precision for a total of 14 bits or a range of 0-16383 (although many manufacturers do not implement this increased resolution).

Some controller functions, such as pitch bend or key pressure, are special, with a dedicated MIDI data range of 16,384 steps. This higher resolution makes it possible to, for example, produce the illusion of a continuously sliding pitch, as in a violin's portamento, rather than a series of zippered steps such as a guitarist sliding fingers up the frets of the guitar's neck. At the MIDI message stream level, pitch bend and key velocity use different, dedicated messages (Polyphonic Key Pressure, Channel Pressure, or Pitch Bend Change) instead of the ordinary Control Change message. There is a trade-off, however: the pitch wheel and/or key pressure functions of a MIDI keyboard can, depending on the performance, generate large amounts of data which can in turn lead to a slowdown of data throughput on the MIDI connection. This can be remedied by using a sequencer to "thin" pitch-bend (or any other continuous controller) data down to only a limited number of messages per second, or down to only messages that change the controller value by at least a certain amount.

The original MIDI spec included approximately 120 virtual controller numbers for real time modifications to live instruments or their audio. MIDI Show Control (MSC) and MIDI Machine Control (MMC) are two separate extensions of the original MIDI spec, expanding the MIDI protocol to become far more than its original intent.

See also: Mobile phone ringtone, SoundFont, Pulse-code modulation (PCM), show control

[edit] Beyond MIDI 1.0

Although traditional MIDI connections work well for most purposes, a number of newer message protocols and hardware transports have been proposed over the years to try to take the idea to the next level. Some of the more notable efforts include:

[edit] ZIPI

In 1994 UC Berkeley's Center for New Music and Audo Technologies (CNMAT) proposed a new protocol called ZIPI to replace MIDI. ZIPI used a high-bandwidth transport and a message system that was very similar to MIDI (though incompatible with MIDI). The message system was not based on channels, instead shifting the control to individual notes on each device. Channel messages were emulated by grouping note messages. The ZIPI protocol failed to gain more than limited acceptance, primarily due to lack of commercial demand. ZIPI was developed at CNMAT and was not administered by any standards organization.

[edit] OSC

The Open Sound Control (OSC) protocol was developed by the same CNMAT team responsible for ZIPI. OSC has been implemented in the well-known software synthesizer Reaktor and in other projects including SuperCollider, Pure Data, Isadora, Max/MSP, Csound, VVVV and ChucK. The Lemur Input Device, a customizable touch panel with MIDI controller-type functions, also uses OSC. OSC differs from MIDI over traditional 5-pin DIN in that it can run at broadband speeds when sent over Ethernet connections. Unfortunately few mainstream musical applications and no standalone instruments support the protocol so far, making whole-studio interoperability problematic. OSC is not owned by any private company, however it is also not maintained by any standards organization.

[edit] mLAN

Yamaha has its mLAN[1] protocol, which is a based on the IEEE 1394 transport (also known as FireWire) and carries multiple MIDI message channels and multiple audio channels. mLAN is not maintained by a standards organization as it is a proprietary protocol. mLAN is open for licensing.

[edit] HD-MIDI

Development of a major modernization of MIDI is now under discussion in the MMA. Tentatively called "High-Definition MIDI" (HD-MIDI™), this new standard would support modern high-speed transports, provide greater range and/or resolution in data values, increase the number of MIDI Channels, and support the future introduction of entirely new kinds of MIDI messages. Representatives from all sizes and types of companies are involved, from the smallest specialty show control operations to the largest musical equipment manufacturers. No technical details or projected completion dates have been announced. [2] [3]

See also: New Interfaces for Musical Expression

[edit] MIDI software

Further information: List of MIDI editors and sequencers

[edit] Sound samples

[edit] See also

[edit] External links

[edit] Official MIDI Standards Organizations

[edit] Unofficial Sources

[edit] MIDI Search engines

[edit] Other resources

Static Wikipedia (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2007 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -

Static Wikipedia 2006 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu

Static Wikipedia February 2008 (no images)

aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu