The Small Print (Part 2)
Reading MIDI Implementation Charts
In spite of MIDI's promise of compatibility between hi-tech musical equipment, few of us have found this to be the case. Vic Lennard takes his second look at MIDI Implementation charts and how they can solve your MIDI problems.
In this second and final article on reading and understanding MIDI implementation charts, MIDI controllers, SysEx, System Common and System Realtime make up The Small Print.
LAST MONTH WE looked at what a MIDI implementation chart is, why all MIDI instruments carry them in their documentation and how they can be used to solve MIDI compatibility problems. Let's now continue our tour of the "small print" with a look at MIDI controllers.
A CONTROLLER HAS the ability to alter MIDI data other than that for notes, pitchbend or after-touch. Each controller is allocated a number between 0 and 127. For example, a sustain pedal becomes MIDI controller No. 64.
Controllers are divided up into three main sections: 0-31, 32-63 and 64-128. The first two groups are continuous controllers (such as MIDI Volume, controller No. 7, and Modulation, No. 1) with the second group being used to provide greater resolution where required - a more detailed description is unnecessary here. Controllers 64-95 are switches and include the likes of Sustain pedal (No. 64) and Soft pedal (No. 67).
Beyond these are controllers which are rarely found within Implementation tables but include Data increment/decrement (+/-) and Registered/Non-registered parameters. These are related to the sound parameters of MIDI instruments. The MIDI spec does give a degree of compatibility between manufacturers of MIDI musical instruments - instances of which are generally few and far between.
So much for the theory, how does this all show up on the MIDI implementation chart? The function column has a list of all controllers while the next two columns state whether they are transmitted by the instrument in question, recognised by it or both. The remaining column should contain an explanation for their use...
As usual, life isn't simple. Controller No. 64 has been called "Damper pedal" (Akai S950), "Hold 1" (Roland D550) and "Sustain" (Korg M1 and Akai S900) amongst other names. Once outside the MIDI spec, the manufacturers have chosen to go their own ways once again. To my mind, calling controller No. 64 a damper is taking the comparison with a piano too far, as a piano cannot indefinitely sustain a note. Meanwhile, controller No. 1 is referred to as either Modulation (on most MIDI devices), Pitch MG (Korg M1) or Vibrato (Casio CZ101).
Another thing to look out for is whether your synth recognises MIDI Volume (No. 7). If it does, its overall level can be tailored from the volume slider on a MIDI master keyboard. This doesn't mean that this slider will actually transmit MIDI volume in all cases - again, look at the chart. The Korg DW8000 is an example of a keyboard which will happily change its sound level when receiving controller No. 7 information and will also respond to its own volume slider but will not transmit the latter's level changes. The frustrations involved in attempting to perform real-time fade outs and finding that some modules are not responding are best left to your imaginations!
Finally, beware of manufacturers bearing MIDI gifts. An "innovative" controller section will almost inevitably lead into trouble - ask any Prophet VS owner.
THERE ARE TWO fundamentally different approaches to patch changing. The first is to simply to send a number between 0 and 127 from a remote device (like a master keyboard) which will either access programs 0 to 127 or 1 to 128 depending on the numbering scheme employed on the MIDI module. This system has its shortcomings; if the module has more than 128 program locations, these will not all be accessible and it will not be practical to use a single patch change to alter the programs on more than one device.
This (in part) has led to the development of a second method of patch and program selection - the "program table". This will assign internal programs to MIDI patch change numbers. For instance, MIDI patch 0 may call up program 56, MIDI patch 1 may call up program 31, and so on. The only disadvantage of this system is that the table has to be set up in the first place. Some devices, the Alesis MIDIverb II, for instance, will allow you to use either method of remote program selection.
"Controller No. 64 has been called Damper pedal (Akai S950), Hold 1 (Roland D550) and Sustain (Korg Ml and Akai S900) - amongst other names."
The MIDI implementation chart will show the patch number range which can be transmitted and recognised by a unit. The recognition table may also show the true range of program/patch numbers if a table is being used. It's worth bearing in mind here that few synths use tables, while most MIDI effects units do.
By now you should have come to expect that nothing is standard where MIDI is concerned. Some devices number their programs from 0 but use this first program as an automatic bypass, such as the Alesis Quadraverb (although no MIDI Implementation chart is provided with this unit) while others require you to set up your own bypass program by physically turning on a bypass switch while in a blank program and saving that program.
Another problem is that many master keyboards (especially Roland's) which can send patch changes work in octal, (base 8) and begin numbering from 11. All goes smoothly until you hit patch 18 - because it's followed by patch 21. Patch 28 is followed by 31 and so on up to the 64th patch: patch 88. This is fine if you're controlling a MIDI unit with the same method of numbering but is headache-inducing if the numbering systems are not similar.
THE NEXT THREE sections of the MIDI implementation chart all deal with how a MIDI device interfaces with the outside world. System Exclusive information is so named because each manufacturer has both a MIDI identification code and individual codes for each piece of equipment. This makes each MIDI unit unique and allows it to obtain its parameter values from a stream of data without accidentally reading someone else's. This is like having a variety of locks on boxes containing information, and only being able to obtain access to that information if you have the the correct key. The main use of SysEx is to transfer the internal voice data to and from a computer or suitable sequencer for storage.
Unlike System Exclusive, System Common information is applicable to any MIDI device. MIDI Song Position Pointer is used for marking a specific position in a song by keeping a count of how many MIDI clocks (there are 16 to a crotchet) have passed since the start of the song. MIDI Song Select specifies which song is to be played when a start command is received (see next section) and Tune Request is normally associated with analogue synths for oscillator tuning.
System Real Time information concerns timing data - which is of paramount importance to the synchronisation of sequencers and drum machines. When a sequencer is put into play mode, a "start" command is sent out, followed by a continuous stream of MIDI clock information to keep everything in sync. Stop the sequencer and a "stop" command is issued, followed by "continue" if the song is restarted from the point at which it was stopped providing the sequencer is capable of supporting such commands. All these are shown under Messages in the implementation chart.
Any device connected to the other end of a MIDI cable will respond to these orders if they are within its MIDI specifications. Consequently, the chart should show which commands a sequencer is able to send and respond to but usually just shows an "0" which can be ambiguous if only some of the commands are implemented. For instance, neither the Oberheim DX drum machine nor the original E-mu SP12 respond to Continue commands and so must be started from the beginning of the song each time. Even more strangely, Sequential's Drumtraks can recognise Continue commands but won't transmit them. The joys of early MIDI machines.
THE FINAL PART of the MIDI implementation chart, labelled Aux(iliary), puts all the bad MIDI apples into one basket. Local Control, All Notes Off, Active
"Neither the Oberheim DX drum machine nor the original E-mu SP12 respond to Continue commands and so must always be started from the beginning of the song."
Sensing and Reset cause more problems between them than all other aspects of MIDI put together.
Local Control is the ability of a keyboard to divorce itself from its internal sound generators (Local off). The point of this is to allow the keyboard part to play notes into a sequencer while the internal sounds are being played by existing data. Take the situation of an Ensoniq Mirage with drum sounds loaded and a Yamaha EMT1O MIDI piano module. If you record the drum part onto the sequencer first and then attempt to play the piano sound from the Mirage keyboard, the piano will have the odd drum voice sounding along with it. To prevent the drums from sounding you must turn down the Mirage volume control - after which you can't hear the recorded drum track.
I can hear Mirage owners saying the Mirage doesn't have Local on/off - the MIDI chart says it doesn't, the user group say it doesn't but the truth appears to be that it does. Parameter 31 is mentioned in later manuals as being the Local switch (which defaults to Local on) but appears to exist in earlier versions as well.
The absence of a Local off switch does not preclude an instrument from behaving as if it has - Kawai's K1 can assign the control of its internal sounds to the keyboard or to MIDI, the latter of which simulates Local off. But of course, this won't show up on the MIDI chart.
The MIDI All Notes Off command is another golden turkey. Should a note on command lose its associated note off command, the note will drone on endlessly. If All Notes Off is implemented, it is the equivalent of having 128 note off events on the current MIDI channel each time you release all keys. So what happens if you're playing two parts on the same MIDI channel? The releases for the second part will be dictated by those for the first. Fortunately, most sequencers can filter this out. For the record, there are four different versions of All Notes Off, one for each MIDI mode.
Active Sensing is another curiosity. Some master keyboards send out a signal every 0.3 seconds when no other MIDI data is being generated - this dates back to the dawn of MIDI when the inventors were concerned about the effects of lost data, especially as MIDI is a one-way system as opposed to a "handshaking" system. If a device receives this signal, it expects to continue to do so and will shut off its internal sounds if it does not.
However, if the signal is never received. the MIDI device doesn't miss it. This message is optional and usually serves only to clog up MIDI lines.
Finally we come to System Reset. This is equivalent to turning the machine off and then on again and is rarely, if ever, used.
SINCE THE OUTSET of MIDI, the system has become much more reliable and manufacturers seem to have become happy to adhere to it. It is also true to say. however, that some manufacturers treat the MID] sockets on a piece of equipment as a proprietary 5-pin DIN interlace. While offering advantages to users loyal to one company, this also means that there's little chance of one piece of gear being 100% compatible with another. This attitude to MIDI is often most apparent in implementation charts which are muddled, confusing and sometimes simply wrong. It seems a shame that there isn't a central authority with the power to check and correct them, especially after updates have been made to a piece of equipment. But until someone sets up such a body, let's hope this guide goes some way to helping you understand what your equipment can really do.
Feature by Vic Lennard
mu:zines is the result of thousands of hours of effort, and will require many thousands more going forward to reach our goals of getting all this content online.
If you value this resource, you can support this project - it really helps!