Computers
Midi CC codes

Here's a handy list of MIDI continuous controller commands (or CCs) defined in the official MIDI Spec.  The MIDI
specification is the agreed upon standard the manufacturers follow when building midi devices.  It is published by the MIDI Manufacturer's Association (MMA).  It is important to understand that manufacturers are not required to follow this spec or fully implement it in their devices.  Nearly all MIDI synths do implement the basic ones, which I have put in bold.  You can check to see which controllers your synth can send and receive by looking at the MIDI implementation chart in the back of your manual.  

You can read the official MIDI spec all day long and still not get a clue on how to set up your synths knobs to
control other stuff. So I am going to give you a very unofficial real world "loose" definition of what is really
going on in the area.  I use the term "loose" because manufacturers only loosely follow the spec. They wrote it
that way on purpose.  The more you try to read it literally, the more confused you may become. Nearly all take great liberty to interpret controller definitions to suit the needs of the product.  For example, if a knob on a synth is labeled "filter cutoff", they might use an unchangeable controller 74 for that.  Or they might not.  They might use 74 as a default, but let you change it to any value you want. Or they might use 21, or 98 followed by 99.  I know some of you are getting worried this may be a bit much to grasp, but bear with me, it's all really simple. When you are done with this article you should be able to set up all your synths in a consistent fashion, where the filter knob on one actually controls the filter on another.


See the Questions and Answers Below
 
 
The knobs on your synth typically send controller data.  You can also generate and output such controller data
from faders and and editors within the software.  Whether they work or not depends solely on if the feature is
implemented in the product. Sometimes controllers are freely assignable in your midi device.  For example, in a Proteus 2000, the manufacturers have implemented 12 controllers, calling them controllers a, b, c, d, e, f, g, h, i, j, k, l.  You can route the controller number of your choice to each from 1-95.  Inside each program of the p2k, you assign parameters to as many controllers as you want.  You may decide you want filter cutoff on controller A and resonance on Controller B.  Then at the global level you define that Controller 17 for example) will always tweak Controller A.  You twist the A knob and Controller 17 values are sent to the sequencer, which echoes them back to the synth, and turns the frequency cutoff parameter. 


MSB and LSB Don't let this bit of technical jargon scare you off.  MSB stands for Most significant byte and LSB
stands for Least significant Byte. This data format is used when 127 values are not enough for the control.  Think
of it like a shortwave radio.  The MSB sets the coarse tuning and the LSB is the fine tuning.  Synths with very
finely articulated knobs may send out an MSB and LSB, but most just send an LSB.  You can tell by recording a knob tweak in your sequencer, then looking at the data in the event editor.  If there are two sets of controllers, each with a range of 0-127, that's what's going on, it's sending a MSB and an LSB.  Don't worry about learning hexidecimal code that the programmers have to deal with.  Unless you are writing music software, all that stuff is a waste of time.  Just remember, coarse and fine tuning.

One of the beautiful, but confusing things about controller definitions is the way manufacturers can creatively
use them to control the innards of their synthesizers.   Remember, it's just code.  Send the right code, the synth
reacts. 

List of Standard MIDI Continuous Controllers (CCs)
0 Bank Select (MSB)  Never re-route anything to Controller 0.  It will mess up your program changes.
1 Modulation Wheel or Joystick (positive polarity) (MSB)  Can be effectively remapped to other controllers on some synths
2 Breath controller sometimes Joystick (negative polarity) (MSB)  Can be effectively remapped to other controllers on some synths
4 Foot Pedal (MSB)  Don't mess with it
5 Portamento Time (MSB)  Only use this for portamento time
6 Data Entry (MSB)  Better leave this one alone too.
7 Volume (MSB)  If you re-route to Controller 7, your software mixer will mess up
8 Balance (MSB)  Some synths use it
10 Pan position (MSB) If you re-route to Controller 10, your software mixer will mess up
11 Expression (MSB)  Roland synths use it.  Some synths use it for LFOs, some for crescendo/ decrescendo (loudness).  Sometimes routed to keyboard aftertouch.
 

The group below are sometimes "hard assigned" to faders and knobs on your synth.  But usually they are set as a default you can change to match your other synths

12 Effect Control 1 (MSB)
13 Effect Control 2 (MSB)
14 Undefined
15 Undefined
16 Ribbon Controller or General Purpose Slider 1
17 Knob 1 or General Purpose Slider 2
18 General Purpose Slider 3
19 Knob 2 General Purpose Slider 4
20 Knob 3 or Undefined
21 Knob 4 or Undefined

22-31 are undefined, available for use by synths that let you assign controllers.  These are a good choice if you can freely assign controllers on all your synths.  If you can use them in a consistent way, all your synths will react the same way.  For example if you always assign 22 to Knob A and you always assign Knob A to filter cutoff, then all your programmable synths will sweep the filter when you turn knob A no matter what synth is selected on that channel in your sequencer.  This works until you get a synth that hard assigns filter cutoff to controller 74, as many general midi synths do.  To make it more confusing, some synths will let you assign filter cutoff to CNTL 22 but will still let the synth react to CNTL 74

32 Bank Select (LSB)  It's critical that you do not assign this controller to other functions.  Unless you like random bank changes running through your song. 

These may or may not be implemented in your synth, most likely they are not. 

33 Modulation Wheel (LSB)
34 Breath controller (LSB)
36 Foot Pedal (LSB)
37 Portamento Time (LSB)
38 Data Entry (LSB)
39 Volume (LSB)
40 Balance (LSB)
42 Pan position (LSB)
43 Expression (LSB)
44 Effect Control 1 (LSB) Roland Portamento on and rate
45 Effect Control 2 (LSB)

46-63 may be in use as the LSB for controllers 14-31 in some devices, but I have not seen one yet.

This group controls pedals typically.   Leave this group alone when reassigning controllers.

64 Hold Pedal (on/off)  Nearly every synth will react to 64 (sustain pedal)
65 Portamento (on/off)
66 Sustenuto Pedal (on/off)
67 Soft Pedal (on/off)
68 Legato Pedal (on/off)
69 Hold 2 Pedal (on/off)

More Ways to CONTROL

Digidesign Command 8 Control Surface for Pro Tools Command|8 puts integrated, tactile manipulation of Pro Tools TDM or LE systems running on Windows XP or Mac OS X at your fingertips more affordably than ever before. While there are several compact control surface options from third-party manufacturers compatible with Pro Tools, only Command|8 was made by Digidesign and Focusrite specifically for Pro Tools.


M-Audio Project Mix I/O Control Surface/Interface Today, more professional music is produced at home than ever before -- and the new ProjectMix I/O delivers what you need to take your computer-based studio and productions to the next level. Seamless integration with all major DAW software. The ability to record directly into industry-standard Pro Tools sessions. Faders so you can feel the mix with your fingertips instead of dragging a mouse. On-board display of critical parameters for intuitive operation. Motorized control to craft more accurate mixes.
Priced from

Evolution UC33e MIDI Control Surface The Evolution UC-33 is the affordable hardware controller, designed to be used with any computer music / MIDI setup.


Frontier Designs AlphaTrack Compact Control Surface Frontier Design Group's new AlphaTrackâ„¢ combines a set of intuitive tactile controls in a compact and attractive package. Ride a high-resolution fader, turn real knobs, scroll and shuttle with the touch of your fingers, all with a control surface that fits your desktop and the way you work. AlphaTrack lets you work more productively and creatively without giving up a lot of desktop space.


Akai MPD16 USB MIDI Pad Control Surface Expanding on the legacy of the legendary MPC series, Akai Professional introduces the MPD16 USB/MIDI Pad Control Surface. The MPD16 is a self-contained unit that connects via USB and/or MIDI to computers and sound engines such as the new Akai Z4 and Z8 samplers, which include drum program set-ups as well as
 
This next  group controls parameters on some synths.  Here's where you need to closely inspect your midi implementation chart to see what's going on.  Synths with lots of knobs may "hard assign " them to specific knobs.  If you can use 71 and 74 for frequency and resonance, it's a good idea to do so.  On the Korg Triton for example, 71-74 are hard assigned to the knobs.  If you set your more freely assignable Proteus to respond the frequency cutoff on CNTL 74, then your rig is more consistent.

70 Sound Variation
71 Resonance (aka  Timbre)
72 Sound Release Time
73 Sound Attack Time
74 Frequency Cutoff (aka  Brightness )
75 Sound Control 6
76 Sound Control 7
77 Sound Control 8
78 Sound Control 9
79 Sound Control 10
80 Decay or General Purpose Button 1 (on/off)  Roland Tone level 1
81 Hi Pass Filter Frequency or General Purpose Button 2 (on/off)  Roland Tone level 2
82 General Purpose Button 3 (on/off) Roland Tone level 3
83 General Purpose Button 4 (on/off) Roland Tone level 4

84-90 are undefined, typically available for use by synths that let you assign controllers

Effects Group  Controls 91 and 93 are active on nearly all general midi synths I have played, and many others use these too.

91 Reverb Level
92 Tremolo Level
93 Chorus Level
94 Celeste Level or Detune
95 Phaser Level

It's probably best not to use the group below for assigning controllers.


96 Data Button increment
97 Data Button decrement
98 Non-registered Parameter (LSB)
99 Non-registered Parameter (MSB)
100 Registered Parameter (LSB)
101 Registered Parameter (MSB)

It's very important that you do not use these no matter what unless you want to invoke these functions

120 All Sound Off
121 All Controllers Off
122 Local Keyboard (on/off)  You might actually crash your keyboard if you use this one.
123 All Notes Off  (Heh, your song will go haywire if you use this assigned to a knob.)

you typically don't want your synths to change modes on you in the middle of making a song, so don't use these.

124 Omni Mode Off
125 Omni Mode On
126 Mono Operation
127 Poly Operation

CME UF5 49-Key Semi-Weighted Action Controller

CME Waldorf Nano SynCard Expansion Board for UF Controllers
The Waldorf Nano SynCard is a plug-in sound expansion module designed for use with CME UF MIDI keyboard controllers. the Nano SynCard provides 24-note polyphony and contains over 1,000 classic Waldorf MicroQ synth sounds. It easily installs into the back panel of CME's UF Series keyboards.   

--------------------------------------------------------------------------------
Questions and Answers

--------------------------------------------------------------------------------

Q) Tweak, dude, I can't read manuals! Every time I open one up I fall asleep!  Just tell me how it works! OK?

OK here it is plain and simple. Your sequencer application allows you to record controller data the synth sends out, right? Here's the EASY way.  Start recording on any MIDI track.  Turn a knob.  Look at the data in the event editor.  That's your controller data you are looking at from that knob.  Now go to your other synths global section and set up it's controllers to the same numbers that the knobs (that you use most of the time) transmit. That is, if your other synths will let you (hehe).


--------------------------------------------------------------------------------

Q) Tweak!  I only have 4 freely assignable knobs on my keyboard.  Which controllers do you recommend?

A) I tend to favor using 74 (filter cutoff) , 71 (Resonance)  91  (Reverb) and 93 (Chorus) as these are widely adopted by many hardware and software synths.


--------------------------------------------------------------------------------

Q) I set up my MIDI controller with the definitions you supplied but it doesn't work with all my synths!  What is going on!

A) Every synth may be different in the controller events it uses for different functions.  The MIDI spec is just a guideline in this area.  Gear does not have to follow it, and they may adapt CC events for their own purposes.  Turn to the back page of your manuals and look for a MIDI IMPLEMENTATION CHART, which tells you which commands are supported. 


--------------------------------------------------------------------------------

Q) Are MIDI continuous controller events the same as System Exclusive data?

A) No.  CC events can be passed in real time as part of a song and can be used with all synths that support them.  Consider the mod wheel, which sends CC1.  It works the same way on different hardware.  System Exclusive or SysEx contains a machine specific identifier so only that specific model from that specific manufacturer is controlled.  If you sends sysex designed for a Korg Wavestation, you can bet that your Roland Fantom will totally ignore the data.  SysEX code often switches synths to a different mode momentarily so audio may stop when sending or receiving sysex, so it's value is limited for real time tweaks.  MIDI CC events on the other hand can be inserted directly into a sequence of note data, with no glitch (other than those you intend).


--------------------------------------------------------------------------------


 

OK, we're done!  Amazing what you can do with a little control.  Heh.  Never lose Control, it's unbecoming you know. Heh, I AM IN Control!  Right!

Take Control of your Sonic Universe!  Ah, there's the title....

source: tweakheadz

 
Midi explained

MIDI (Musical Instrument Digital Interface, IPA: /ˈmɪdi/) is an industry-standard protocol that enables electronic musical instruments, computers, and other equipment to communicate, control, and synchronize with each other. MIDI allows computers, synthesizers, MIDI controllers, sound cards, samplers and drum machines to control one another, and to exchange system data.

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

MIDI does not transmit an audio signal or media — it 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 widespread adoption throughout the industry, and for continuing in use since its introduction in 1983.

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); and proprietary digital interfaces such as Roland Corporation's DCB (digital control bus), the Oberheim system, and Yamaha's "keycode" system. In 1981, audio engineer and synthesizer designer Dave Smith of Sequential Circuits, Inc. proposed a digital standard for musical instruments in a paper for the Audio Engineering Society. The MIDI Specification 1.0 was published in August 1983.

Since then, MIDI technology has been standardized and is maintained by the MIDI Manufacturers Association (MMA). All official MIDI standards are jointly developed and published by the 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 from MMA in English, or from AMEI in Japanese.

In the early 1980s, MIDI was a major factor in bringing an end to the "wall of synthesizers" phenomenon in progressive rock band concerts, when keyboard performers were often hidden behind huge banks of analog synthesizers and electric pianos. Following the advent of MIDI, many synthesizers were released in rack-mount versions, which meant that keyboardists could control many different instruments (e.g., synthesizers) from a single keyboard.

In the 1980s, MIDI facilitated the development of hardware and computer-based sequencers, which can be used to record, edit and play back performances. In the years immediately after the 1983 ratification of the MIDI specification, MIDI interfaces were released for the Apple Macintosh, Commodore 64, and the PC-DOS platform, allowing for the development of a market for powerful, inexpensive, and now-widespread computer-based MIDI sequencers. The Atari ST came equipped with MIDI ports as standard, and was commonly used in recording studios for this reason. 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.

In 1991, the MIDI Show Control (MSC) protocol (in the Real Time System Exclusive subset) was ratified by the MIDI Manufacturers Association. The MSC protocol is an industry standard 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.

A number of music file formats have been based on the MIDI bytestream. These formats are very compact; a file as small as 10 KiB can produce a full minute of music or more due to the fact that the file stores instructions on how to recreate the sound based on synthesis with a MIDI synthesizer rather than an exact waveform to be reproduced. A MIDI synthesizer could be built into an operating system, sound card, embedded device (e.g. hardware-based synthesizer) or a software-based synthesizer. The file format stores information on what note to play and when, or other important information such as possible pitch-bend during the envelope of the note or the note's velocity.

This is advantageous for applications such as mobile phone ringtones, and some video games, however it may be a disadvantage to other applications in that the information is not able to guarantee an accurate waveform will be heard by the intended listener, because each MIDI synthesizer will have its own methods for producing the sound from the MIDI instructions provided. One example is that any MIDI file played back through the Microsoft MIDI Synthesizer (included in any Windows operating system) should sound the same or similar, however, when the same MIDI bytestream is output to a synthesizer on a generic sound card or even a MIDI synthesizer on another operating system, the actual heard and rendered sound may vary. One sound card's synthesizer might not reproduce the exact sounds of another synthesizer.

As such, MIDI-based mobile phone ring tones sound different on a handset than when previewed on a PC. In the same way, most modern software synthesizers can handle MIDI files but might render them completely differently from another synthesizer, especially since most modern software synthesizers such as a VST Instrument tend to allow the loading of different patches and the modification of these patches to create different sounds for each MIDI input. The term "MIDI sound" has gotten a poor reputation from some critics, which may be the result of the poor quality sound synthesis provided by many early sound cards, which relied on FM synthesis instead of wavetables to produce audio.

Almost all music recordings in the 2000s are compatible with MIDI devices[citation needed]. In addition, MIDI is also used to control hardware including recording devices and sound effects modules, as well as live performance equipment such as stage lights and some types of digital effect pedals. MIDI allows computers, synthesizers, MIDI controllers, sound cards, samplers and drum machines to control one another, and to exchange system data.

[edit] Interfaces

MIDI connector diagram
MIDI connector diagram

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. Many MIDI compatible instruments have a MIDI Thru connector, which can be used to connect a second instrument and pass along MIDI data received by the MIDI In connector of the first instrument. Such chaining together of instruments via MIDI Thru ports is unnecessary with the use of MIDI "patch bay," "mult" or "Thru" modules or boxes consisting of a MIDI In connector and multiple MIDI Out connectors to which multiple instruments are connected. Physically MIDI connectors are DIN 5/180° connectors.

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 connected to the computer via the game port, the newer DA-15 connector, a USB connector or by FireWire or ethernet.

Messages

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.

When a musical performance is played on a 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 characteristics of 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.

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.

Composition

MIDI composition takes advantage of the MIDI interface to allow musical data files to be shared among various electronic instruments by using a standard list of commands and parameters known as General MIDI (GM). Because the music is simply data and not actually recorded wave forms, it is therefore maintained in a small file format. Several computer programs allow manipulation of the data so that composing for an entire orchestra of synthesized instrument sounds is possible. The data can be reproduced by any electronic instrument that adheres to the GM standard. There are many websites that allow downloads of popular songs as well as classical music, and there are also websites where MIDI composers can share their works.

MIDI music was much more viable back before broadband internet was available to the masses, due to its small file size. Also, the advent of high quality audio compression such as the MP3 format decreased the utility of MIDI music.

File formats

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 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 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 exist three different SMF formats; the format of a given SMF is specified in its file header. A Format 0 file 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.

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.

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). See the main article Extensible Music Format (XMF).

RIFF-RMID File Format

On Microsoft Windows, the system itself uses RIFF-based MIDI files with the ".rmi" extension. Note, Standard MIDI Files are not RIFF-compliant. A RIFF-RMID file, however, is simply a Standard MIDI File wrapped in a RIFF chunk. By extracting the data part of the RIFF-RMID chunk, the result will be a regular Standard MIDI File.

In recommended practice RP-29 ([1]), the MMA defined a method for bundling one Standard MIDI file (SMF) image with one Downloadable Sounds (DLS) image, however, this method was obsoleted by the introduction of the Extensible Music Format (XMF), which should be used for this purpose.

Usage and applications

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.

General MIDI

The General MIDI (hereafter referred to as "GM") standard addresses the indeterminacy of the MIDI standard regarding the meaning of program change and controller messages and other synthesizer features: early synthesizers could, and actually did, sound completely different in response to the same MIDI messages and required different controller messages for similar purposes. The GM standard mandates an assignment of specific instruments to program change settings (for example, 3 is "Grand Piano"), the mapping of several controller numbers to important effects, use of channel 10 for percussions (a specific unpitched sound in place of each note), and various minimum specifications. Currently, only very old, very low-end or very specialized synthesizers do not implement the General MIDI standard or one of its successors; General MIDI compatibility is almost universal for music distributed in SMF formats, which relies on this standard for portability. 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. General Midi 1 was introduced in 1991.

GS and XG

To improve the General MIDI Standard and match the improvements of newer synthesizers both Roland, with its GS specification, and Yamaha, with its XG specification, introduced stricter requirements while maintaining compatibility with GM commands. Adoption of these two standards has been generally limited to the respective manufacturer.

General MIDI Level 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, further 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 1999 and it is commonly implemented in newer synthesizers.

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.

Alternative 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 they depend on different intonation systems. To address this issue in a standardised manner, in 1992 the MMA ratified the MIDI Tuning Standard, or MTS. This standard allows 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 value encoding a given frequency:

p = 69 + 12\times\log_2 { \left(\frac {f}{440\,\mbox{Hz}} \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, as well as other microtuners.

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 a.k.a FireWire, and Ethernet is now common (see below).

Over Ethernet

Compared to USB or FireWire, the Ethernet implementation of MIDI provides network routing capabilities, which are extremely useful in studio or stage environments (USB and FireWire are restricted to connections between one computer and some devices and do not provide any routing capabilities).

Ethernet is moreover capable of providing the high-bandwidth channel that earlier alternatives to MIDI (such as ZIPI) were intended to bring.

After the initial fight between different protocols (IEEE-P1639, MIDI-LAN, IETF RTP-MIDI), it appears that IETF's RTP MIDI specification for transport of MIDI streams over Ethernet and Internet is now spreading faster and faster since more and more manufacturers are integrating RTP-MIDI in their products (Apple, CME, Kiss-Box, etc...). Mac OS X, Windows and Linux drivers are also available to make RTP MIDI devices appear as standard MIDI devices within these operating systems.

IEEE-P1639 is now a dead project. The other proprietary MIDI/IP protocols are slowly disappearing one after the other, since most of them require expensive licensing to be implemented (while RTP MIDI is completely opened) or the MIDI implementation does not bring any real advantage (apart from speed) over original MIDI protocol.

RTP-MIDI Transport Protocol

The RTP-MIDI protocol has been officially released in public domain by IETF in December 2006 (IETF RFC4695).[1] RTP-MIDI relies on the well-known RTP (Real Time Protocol) layer (most often running over UDP, but compatible with TCP also), widely used for real-time audio and video streaming over networks. The RTP layer is easy to implement and requires very little power from the microprocessor, while providing very useful information to the receiver (network latency, dropped packet detection, reordered packets, etc.). RTP-MIDI defines a specific payload type, that allows the receiver to identify MIDI streams.

RTP-MIDI does not alter the MIDI messages in any way (all messages defined in the MIDI norm are transported transparently over the network), but it adds additional features such as timestamping and sysex fragmentation. RTP-MIDI also adds a powerful 'journalling' mechanism that allows the receiver to detect and correct dropped MIDI messages.The first part of RTP-MIDI specification is mandatory for implementors and describes how MIDI messages are encapsulated within the RTP telegram. It also describes how the journalling system works. The journalling system is not mandatory (journalling is not very useful for LAN applications, but it is very important for WAN applications).

The second part of RTP-MIDI specification describes the session control mechanisms that allow multiple stations to synchronize across the network to exchange RTP-MIDI telegrams. This part is informational only, and it is not required.

RTP-MIDI is included in Apple's Mac OS X, as standard MIDI ports (the RTP-MIDI ports appear in Macintosh applications as any other USB or FireWire port. Thus, any MIDI application running on Mac OS X is able to use the RTP-MIDI capabilities in a transparent way). However, Apple's developers considered the session control protocol described in IETF's specification to be too complex, and they created their own session control protocol. Since the session protocol uses a UDP port different from the main RTP-MIDI stream port, the two protocols do not interfere (so the RTP-MIDI implementation in Mac OS X fully complies to the IETF specification).

Apple's implementation has been used as reference by other MIDI manufacturers. A Windows XP RTP-MIDI driver[2] for their own products only has been released by the Dutch company Kiss-Box and a Linux implementation is currently under development by the Grame association.[3] So it seems probable that the Apple's implementation will become the "de-facto" standard (and could even become the MMA reference implementation).

Other applications

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.

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:

OSC

The Open Sound Control (OSC) protocol was at CNMAT. 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. Since September 2007, there is a proposal for a standardized namespace within OSC for communication between and controllers, synthesizers and hosts.

mLAN

Yamaha has its mLAN[2] 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, although covered by patents owned by Yamaha.

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 speciality show control operations to the largest musical equipment manufacturers. No technical details or projected completion dates have been announced.

 

source: wikepedia

 
The Genesis project

Genesis project

Organportal has let there imagination gone wild and produced the Genesis Project for Böhm organs. It was just a idea of a new organ concept specialy made for the German organmanufacturer Böhm...

Read more...