There are, of course, many other resources to learn about MIDI, but these books are quite good. The full references are listed in the ElectronMedia pages of WOW'EM. Links are provided from here.
MIDI
for Musicians by Craig Anderton. This book provides a good basic
introduction to MIDI. It is easily understood and includes a wide
range of information.
General MIDI by Stanley Jungleib is a good book on the basics of General MIDI, one of the more recent developments that has been develop to further standardize the MIDI set-up.
MIDI for the Professional by Lehrman and Tully is a good continuation of the information from MIDI for Musicians. There are several new developments in general MIDI and multimedia applications that are covered.
MIDI:
The Ins, Outs, and Thrus by Jeff Rona. Another fairly
comprehensive book with good basic writing.
MIDI:
A Comprehensive Introduction by Joseph Rothstein. The Rothstein
book is perhaps the most comprehensive. It covers everything from the
basics to much more comprehensive information covered in the MIDI
specification.
The analog synthesizers from the 1960-70s were all monophonic. This means that they could play only one note at a time. In order to play more than one note at a time, you had to buy a separate oscillators for each tone in the chord. These analog synthesizers were also called "modular" synths because you could purchase each individual component and build-up your own system. Each individual could piece together his/her own version of the synthesizer--if you wanted a sequencer, you could buy one; if you wanted to be able to play chords, you had to buy three, four, or more oscillators; if you wanted a keyboard or a ribbon controller, you had to buy those separately, too.
In the late 1970's the Oberheim company developed the first polyphonic synth; it was a four voice analog keyboard. Shortly after the Oberheim release, companies like Sequential Circuits, Yamaha, Moog, Arp, and Roland started developing their own polyphonic synthesizers.
The Oberheim OBX and Rhodes Chroma synthesizers both came out in the late 70's (ca. 1979); they were the first synths that came with a computer interface. The digital interface allowed for three of the same kind (same manufacturers) of instruments to be cascaded, or connected, to one another.
At the same time the first digital sequencers came out (there had been sequencers on the analog synthesizers, including the Arp, Buchla, and Moog instruments), the Roland Micro Composer and the Oberheim DSX had the first digital sequencers.
Finally, in 1982 at a National Association of Music Merchants (NAMM) convention, the participants discussed a proposal for standardizing the transmission and reception of musical performance information digitally between all types of electronic musical instruments. The original proposal was called the UMI--Universal Musical Interface.
In 1983, after a series of revision, this became MIDI--Musical Instrument Digital Interface. Sequential Circuits and Roland were the first companies to introduce MIDI keyboards; shortly after that, Yamaha released the DX7. Now there are MIDI mixers, lighting mixers, effects units and dance mats.
The most important thing to remember is that MIDI is not a language, nor does it directly describe musical sounds. Instead, it is a set of data communications protocol; this was an agreement among manufacturers of music equipment, computers and software that describes a means for music systems and related equipment to exchange information and control signals
The basis of all computer operation is binary. Both computer hardware and software deal with binary integers, 1 and 0. Binary digit is abbreviated, bit.
MIDI uses a 10 bit word--a start bit, eight data bits, (or a byte) and a stop bit. MIDI bytes come in two types: status and data.
Status bytes describe the kind of information sent, whether a key is pressed, the pitch wheel is moved, or other actions take place. This is the first byte sent by a MIDI instrument when an action occurs.
Data bytes follow the status byte and indicate the actual values of the event. If the status byte indicated that a key was pressed, the data byte would indicate what WHICH key was pressed and the velocity with which it was struck.
Status and data bytes are distinguished by the value of the highest (most significant) (leftmost) bit. When it is a 1, the byte is a status byte; when it is 0, the byte is a data byte.
If you want to know more about digital communications, take a look in Ken C. Pohlman's book, Principles of Digital Audio or Dodge and Jerse's, Computer Music (see reading list in ElectronMedia).
MIDI uses serial communication, meaning that data is sent single file in line over a single wire. Parallel communication is the other way in which data may be sent; in this case data is sent over multiple lines simultaneously. See picture:
Compared to parallel communication, serial communication is cheaper (requires fewer cables) and is able to cover longer distances, but it also tends to be a bit more unreliable.
Because most of these early MIDI instruments were developed for the pop/rock industry, performers wanted to stretch cables across a stage--it was not aesthetically pleasing to see a bunch of hardware and junk all over the stage. The long stretches created some interference with the stage lighting and audio systems, so they used serial communication which can reach up to about 50 feet.
TECHNICAL SPECS
MIDI is transmitted over a five-pin DIN (Deutsche Industrie Normale) plug, so MIDI cables wouldn't be confused with audio and video cables (The XLR [aka cannon] has only the 1, 2, 3 formation). See pictures:
The following is the overview of the pin assignments:
Pins 1 and 3 are not used. They were put there in anticipation of some kind of "Super" MIDI developments. So far, none of these future developments have been realized, but you never know...
Pin 2 is used for shielding. The cable attached to a wire that wraps around all the other wires in the cable and helps prevent it from sending and receiving any interference that might ruin the data sent through the other cables.
Pin 4 is an opto-isolated five volt current loop. This pulse makes sure that the electrical current flows in the proper direction. Opto-isolated means that the electrical signal is sent, first converted into light then reconverted into electrical impulse. This avoids any interference getting through.
Pin 5 sends MIDI information.
MIDI communicates unidirectionally; a single wire carries the signal in one direction.
A MIDI system had to be built to allow information to be sent and received by the same device in order for system components to communicate. At the same time, MIDI had to be able to pass data on to a second, third, or more instruments. To accomplish this, it was decided to have three separate connectors on each MIDI instrument--one to send the data out, one to receive data in, and one to pass incoming data on through (thru) to another MIDI instrument. These types of connectors are sometimes called "ports." (a port is an I/O connection) Today, these three ports are found on almost all MIDI devices (some early devices didn't have MIDI THRU--especially drum machines).
MIDI OUT sends information that represents what is being played on the instrument. As someone plays on a MIDI keyboard, the performance information is encoded and that information is sent out the MIDI OUT port.
MIDI IN receives MIDI information and treats it as though it were an action being performed on the instrument. The information is received, decoded, and routed to its specific destination.
MIDI THRU duplicates anything that comes to MIDI IN. It is a "repeater." Don't forget, anything being played on a keyboard only goes out the MIDI OUT, not the MIDI THRU.
When using multiple synthesizers, there are several configurations
that may be used. Here are some possibilities:
Unidirectional--"master" talks to "slave"
Daisy chain--1 master drives several slaves using MIDI THRU
Star--one master has several unidirectional or bi-directional links.
NOTE: the Star configuration must have a computer or at least a MIDI interface of some kind because this requires multiple outputs at least from the one master (this will be further explained later).
Most synthesizers are able to make more complex sounds by layering individual voices on top of one another. Another way to accomplish this is to play single sounds on multiple synths. There are several ways of communicating between synthesizers, but all require some kind of MIDI channel specification. Channel setting designate what sound should play the information.
The lower four bits of a MIDI status byte (aka "nibble") tell which MIDI channel to play use. Four bits have 16 possible numerical values (0-15), so MIDI has 16 different channels.
There are many ways to set up a MIDI system, these range from the simple to the complex, but they divide into two categories: MIDI instrument to MIDI instrument(s) or Computer to MIDI instrument(s) (see above diagrams). When using a computer, a MIDI interface must be introduced to handle multiple serial translations. The basis of a MIDI interface is called a UART, or Universal Asynchronous Receiver/Transmitter.
MIDI data is transmitted as asynchronous serial data at a rate of 31.25 Kilobaud (31,250 bits per second) BAUD = bits/sec.
A Universal Asynchronous Receiver/Transmitter (UART) is used to establish communication between a MIDI device and a computer. UARTs or MIDI interfaces come in all varieties--generic devices with MIDI IN and MIDI OUT (like the Apple MIDI translator), or elaborate systems with many extras such as multi-ports, multi-cables (this would include something like Opcode Studio 5 or Studio 4, or Mark of the Unicorn Timepiece II). Interfaces use one of the two serial ports available in the Macintosh, printer or modem, and in the IBM environment, an internal card is provided to take care of this.
As MIDI came into general use, the members of NAMM established a series of specifications that were used to explain the basic content of any MIDI device. The MIDI Code Specification (MIDI Spec) is divided into two basic classifications of messages: channel and system.
Channel messages consists of a status byte having the channel number and either one or two bytes of data. Channel messages have a field for channel numbers. Synthesizers can be configured to receive or ignore channel commands depending on the channel #s. This restricts which synths will respond to a particular channel message. There are two types of Channel messages: Channel Voice messages and Channel Mode messages
Channel voice messages control sound production qualifications on the receiver device. There are 7 types:
2. Note-on. This message type sends a key number and a velocity value. In MIDI, there 128 possible keys in the MIDI system. Middle C is 64, C# is 65, D is 66, etc.
3. Polyphonic Key pressure, sometimes called Aftertouch, has a key number and a value associated with it. With Polyphonic Aftertouch, each key has its own individual level of Aftertouch available. Aftertouch may be used for is traditionally used for modulation. This means that you can play chords in the left hand and a melody in the right hand, adding vibrato only to the melody. This application offers a lot of expressivity. Although Aftertouch is mostly used for modulation, you can assign it to almost anything.
4. Control Change sends status byte and two data bytes. Control changes would include: Modulation Wheel, Volume, Panning, etc.
5. Program change messages send voice memory number to designate what timbres to play. Only the number of the program is sent, not the actual voice parameters. So, if you have 64 different timbres loaded onto your synth, and if Grand Piano is voice #1, then you'll need to send a program change of 1. Please note: many synths will actually number the 64 voices 0-63 rather than starting with 1.
6. Channel Pressure or Aftertouch messages consist of a status byte and one data byte. Same paradigm as Polyphonic Aftertouch, but instead of having each key with its own Aftertouch value, now the value is associated with a specific channel.
7. Pitch bend messages consist of a status byte followed by two data bytes. Pitch bend sends portamento values that will shift the pitch up or down as much as 8 octaves on some synthesizers.
The second type of Channel message is the Channel Mode Message, which also has 7 types:
2. Local control on In this mode, the synth at receiving
end may be played together with the master synth. Now one player
plays the master and both the master and the slave are heard.
However, both synths are playing the exact same information (you
can change pitches and combination sounds with keyboard splits and
transpositions on the individual synths.
3. All notes off messages turn all currently sounding
notes off.
4. Omni mode OFF With Omni mode off, only channel mode
messages matching that of the receiver are recognized. So if you
send a note-on message to a synth set on channel 2 and you send
the message on channel 3, the note-on will not sound.
5. Omni mode ON With Omni mode on, all messages sent,
regardless of channel are recognized and played on the synth.
6. Mono mode ON With Mono mode on, all commands
recognized regardless of channel and assigned to 1 voice. So, no
matter what channel you send any message on, it will play back on
a single channel.
7. Poly mode ON With Poly mode on, the keyboard will
recognize messages on all channels and play back
polyphonically.
The receiver modes, any of four types, each involve two mode messages with one of the following arrangements:
Mode 1--Channel numbers are insignificant. The synth responds to all information on any channel. Multiple notes may be played, but they all come out on the same channel.
Mode 2--The synth responds to all channels, but only plays one note at a time. More than one held note-on adds affects the synth like portamento.
Mode 3--The synth responds to only the channel to which it is assigned. This arrangement allows for independent control of up to 16 different instruments (one per channel) and will play as many notes polyphonically as each instrument will allow.
Mode 4-- This is a mono version of Mode 3, which permits an instrument to function on the basis of having its voices assigned to different channels.
More recent developments (although there is nothing in the MIDI spec about it) include a Multi mode. Multi mode set-ups allow one instrument to function as 16 with polyphony on each timbre. Most instruments coming out these days have some kind of Multi mode, even though it may not be called Multi mode. In effect, you have 16 different instruments.
The second type of MIDI message is the System Message. Three subcategories of system messages exist: System Common, System Real-Time, and System Exclusive.
2. System Realtime messages are used for synchronizing a network of MIDI sequencers to a common clock. There are messages for time clocks, start, stop and active sensing. Active sensing is optional for either receivers or transmitters --basically it's an "I'm here" message. For example, the receiving synth expects that message every 300 milliseconds; if there is no message, it will be assumed that the MIDI cable has been disconnected. Screen messages like "Check MIDI Connection" will begin to appear. System Realtime messages let one instrument tell others how fast to play, when to start, when to stop, when to change tempo, where to begin within a piece, and even which song to play.
3. System Exclusive (aka sys ex) messages are device-specific data transfer commands used for sending patches and other parameter changes. The format only designates how the message starts, and where it ends, the content of the transfer is unspecified and is unique to one vendor's equipment. So a sysex byte begins with the manufacturer's ID number. Synths that don't match that number will ignore the data, and those that match it will know how respond. A common type of system exclusive message is the bulk dump. For instance, if you are sending a Yamaha TG77 bulk dump, and by accident send the message to a Korg M1, the synth will ignore the data. First of all, you have the wrong manufacturer, and second, it is the wrong synth model.
Back to the Hardware/Software Page.
Copyright September 1996,
updated February 2004.
Kristine H. Burns,
Florida International University
Questions? Contact me.