Musical Instrument Digital Interface was developed in the beginning of the 1980s to connect different electronic devices with each other and to exchange data between them in a standardized way, no matter if it is a Yamaha keyboard, a drum machine of Roland or a synthesizer produced by Robert Moog.
MIDI note #
The basic idea was of course to transmit notes to play a melody. But since a melody is not only a sequence of notes and needs accents to sound nice, it was also important to transmit how loud this note should be played. Therefore a MIDI note message includes both: A number which defines the note and a value for the velocity to define its volume or dynamic. For a middle C, this would look like this:
60 | 100
note C3 | velocity 100
MIDI range #
The range of MIDI is 0 to 127. If the velocity value is 0, the note is off. With 127 the note will be played with a maximum of intensity or rather, like you would hit a key on a piano as hard as possible. In the context of sound banks or presets, MIDI is often incorrectly counted from 1 to 128. This is because we are used to start counting not from zero, but from one. It also feels a little strange to say, I have selected the zeroth programme. 😉
MIDI controls #
One goal in creating digital instruments has always been to imitate analog instruments and make them sound as realistic as possible. This was already the case with the Mellotron, which plays samples of instruments from tape, and is still the basic idea of every VST orchestra library of today.
As mentioned above you can influence with the velocity how intense a note should be played. That’s fine for a piano or in general for short notes. But for example a trumpet player could start playing a longer note quietly and increases afterwards the loudness. That might even change the sound or timbre of the trumpet in the end. With the velocity, there is no chance to do that. But you could change the development of the note with MIDI controls. (CC 7 Volume, CC 2 Breath Control, Aftertouch / Channel Pressure)
By moving or rolling a little bit the finger on the fingerboard of a cello, the pitch gets higher or lower (Pitch Bend). When the finger moves quickly, a vibrato is created. Eventually, the finger even slides the whole way up or down to the next note (CC 65 Portamento On/Off, CC 5 Portamento Time).
By stepping on the foot pedal of a piano, the player can join a sequence of notes to Arpeggios. (CC 64 Hold Pedal)
Control Changes (CC) #
Control Changes or also called Continuous Controls (CC) were added to the MIDI protocol to feature the above mentioned technics and to transmit further informations about the way how a note should be played. Like MIDI note messages, they consist as well out of a control number and a control value.
1 | 76
The control number 1 stands for example for Modulation and is always sent to your computer as soon as you use your mod wheel on the piano.
The value 76 tells the computer how much you have turned it.
The most common CC numbers are:
CC1 | Modulation |
CC2 | Breath |
CC4 | Foot Pedal |
CC5 | Portamento Time |
CC6 | Data Entry |
CC7 | Volume |
CC8 | Balance |
CC10 | Pan |
CC11 | Expression |
CC12 | Effect Control 1 |
CC13 | Effect Control 2 |
CC38 | Data Entry Fine |
CC64 | Hold Time |
CC65 | Portamento On/Off |
CC66 | Sustenuto Pedal |
CC67 | Soft Pedal |
CC68 | Legato Pedal |
CC69 | Hold Pedal 2 |
CC 71 | Sound Controller 2 (Resonance, Timbre) |
CC 74 | Sound Controller 5 (Frequency Cutoff) |
CC 91 | Effect 1 Depth (Reverb) |
CC 93 | Effect 3 Depth (Chorus) |
Pitch Bend & After Touch #
Pitch Bend and Aftertouch are not CC messages. They are an own kind of MIDI message and only consist out of a MIDI value.
As described above, a typical example of pitch bend in real life would be the finger on a cello rolling a little up or down on the fingerboard with its fingertip. This makes the pitch a little higher or lower.
Aftertouch and Channel Pressure are terms used to describe influencing the sound of a note by pressing the key harder or softer after the keystroke. In this way, additional signals are continuously generated, which is used to modulate the sound or timbre. This can be for example the volume, the intensity of a vibrato or a filter applied to the sound.
Aftertouch messages refer to individual keys. This means for the MIDI signal that in addition to the value of the pressure, the number of the key is sent as well. In that way you have individual control over the sound of each note.
Channel Pressure only sends a message for the entire keyboard. So if you press one key harder than another, the average value is taken and it is as if you press both keys with the same pressure so that the modulation is applied equally to all sounding keys.
MPE #
Because it is becoming more and more standard and with version 11 is now also firmly integrated in Ableton, briefly mentioned that since 2018 there is officially the MIDI extension MPE (MIDI Polyphonic Expression). This gives each note its own channel to allow musicians to modulate the sound not only by changing the pressure, but also by horizontal or vertical finger movements. Furthermore, it makes it possible that e.g. pitch bend, which would normally affect all notes, can be expressed polyphonically and individually for each note.
For this purpose, besides Note, Velocity, Pitch Bend and ChannelPressure / Aftertouch, CC74 is now used in addition to transmit finger movements.
Program Changes #
The basic idea of a keyboard is to be able to play different kinds of sounds on one instrument so that there was as well the need for a MIDI message to change between sounds, presets and programs.
In contrast to MIDI notes and CC messages, Program Changes consist also only out of a value like pitch bend and channel pressure.
Due to the fact that the MIDI range is limited from 0 – 127, and thus to 128 different values, a growing number of available sounds on keyboards, drum pads etc. resulted in the wish to find a solution to extend the number of selectable programs.
Bank and Sub Banks #
Therefore the bank (MSB) and sub bank (LSB) messages were established. Technically, they are as well CC messages with the numbers 0 and 32. Once, they were exclusively reserved to select instruments via MIDI signal out of a sound bank and that’s why you cannot choose them in the box of the MIDI control envelopes in Ableton’s MIDI clips.
Together, bank and sub bank let you choose between 128 x 128 = 16 384 different sounds or instruments. In combination with program changes there would be theoretically even 128 x 16 384 = 2 097 152. That should be enough;-)
Today sub bank or CC32 is used for a lot of other stuff as well. An example would be the so called UACC key switches in the sample libraries of Spitfire.
Sequence of Bank, Sub Bank and Program Changes #
If you want to control remotely the presets of a syntheziser or the sound banks of a keyboard where you have to send maybe bank, sub bank and program change messages together, it is important to respect the sequence of the output. It is as if you would search a file on your computer. You first select the folder Brass Instruments, then you choose the sub folder Trombone to finally open the articulation Crescendo.
Where there is a rule, there are of course exceptions. My experience is, for example, that if you use Bank, Sub Bank and Program Changes to remotely control with the KeySwitch & Expression Map the dimensions of Vienna Instruments’ VSL Synchron Player, the switching of the dimensions works even smoother if you send all commands at the same time. But this is only possible because the player remembers e.g. the value 10 for Program Change, even if this tenth slot does not exist. Especially with older hardware this often does not work in this way. If you do not keep the order and you send Program Change 10 first, but there are only eight programs in the currently set sound bank, the device will probably set the highest possible one – Program 8. If the command to change the sound bank arrives afterwards, this program will remain set, even if Program 10, which you actually wanted to set, now exists in this bank.
MIDI is an event-based signal #
Unlike the audio signal which transmit constantly, MIDI is an event-based protocol which means, that there is only a signal sent in case of an event or with other words, if something new happens.
So when we play a note, the instrument receives the number of the note with a value for the velocity (Note On) and will play this note until it receives the same note number again with the value 0 for the velocity (Note Off).
Here is an example that explains it a little more animated: If you unplug the cable of a microphone, the sound stops immediately – most probably even with a big bang;-) But if you press a key on the piano which is connected to your computer and pull out the MIDI cable before you lift your finger, the note will go on playing, because the 0 and with it the message to stop the note cannot not be received anymore by Ableton.
You can use this for your key switches and press for example during a live show cozy and in advance the key switch on your piano while holding still the last note until the change of instrument arrives. The articulation will not change for the currently played note, only for the next.
Furthermore and especially if you compose articulations with automation envelopes, you could even use this characteristic as a feature to play shortly some Pizzicato notes in between two sustain notes.
MIDI Channel und MIDI Ports #
Finally, we need to talk briefly about the topic of MIDI channels and MIDI ports. The MIDI signal normally contains 16 channels. However, some softwares like Native Instruments’ Kontakt Player or Vienna Ensemble give you the possibility to distribute your instruments or articulations over 64 channels. They make use of the fact that MIDI can of course be routed via different inputs or outputs. In the digital context, these are called MIDI ports. In analogue terms, you could think of it as different cables in the recording studio that are connected from various instruments to a mixing console. So if you switch between 64 channels with MultiSkripts in the Kontakt Player, there are actually always 16 channels distributed over the MIDI ports A, B, C and D (4 x 16 = 64).