Everything You Ever Wanted To Know About System Exclusive (Part 5)
(But Were Too Afraid To Ask!)
PART 5: Martin Russ delves into the reasons why MIDI Controller messages are able to do what they can do and provides some practical examples.
In Part 1 of this series I described the structure of MIDI messages in detail, with quite a lot of emphasis on the MIDI Controllers. One reason for this concentration was because the partially defined nature of the current allocation of numbers to parameters means that this is an area where MIDI is evolving. But there was another reason, which serves as an introduction to the this part of the series - MIDI Controllers let you edit internal parameters! Before plunging into using System Exclusive to edit things, a further look at using ordinary MIDI Controllers will help to consolidate some very useful techniques that will become very important in the coming two episodest.
Most performance-based MIDI instruments offer a variety of controllers to permit you to control various parameters in real time. The most obvious one on a keyboard instrument is the keyboard itself - producing note pitch, as well as velocity and aftertouch information. Further expressive interaction comes from the pitch bend and modulation wheels, levers or joystick - with pedals/foot controls and breath controllers completing the picture. Some of these controlling devices are intimately associated with the parameter they alter - the pitch bend always changes the pitch, for example. Other performance controls are less fixed in their uses - the modulation wheel/lever/joystick or aftertouch on many instruments can be patched to alter anything from pulse width modulation to filter cutoff frequency.
Because all these performance controls directly interact with the user, their true effect is masked - the pitch bend always changes the pitch and so is seen as just that: a control to change the pitch. What is actually happening is that you are given a direct link to an internal parameter within the instrument — when you use a performance control you are editing a value, in much the same way as if you were using an external computer-based editor to change the value. You interpret the pitch bend in a different way because it is part of the instrument, and so most people never think of it as an editing tool.
The people who do think of performance controls as editing devices are the designers of expanders and master keyboards. In most expanders the removal of the keyboard is also accompanied by the loss of all the mechanical part of the performance features - the pitch bend and modulation wheels, etc. The only way to access these is via MIDI messages: pitch bend, velocity and aftertouch have their own specific messages, whilst the pedal, breath controller and modulation wheel/lever/joystick use individually defined numbers to specify which MIDI Controller they are. The designers of MIDI master/mother keyboards cater for all these messages by providing the standard performance control devices and usually add general purpose sliders or wheels which can be assigned to any MIDI Controller - in this way, the standard messages are provided, but any instrument-specific features can still be controlled.
An example of this can be seen in the Korg M1R, the rack-mount version of the popular Korg M1 synth. The VDF (Filter) modulation can be controlled by MIDI Controller number 2 - which is also used for breath controllers by Yamaha and for the wave table control by PPG's Wave 2.2 and 2.3, but will be ignored by a Roland D50 unless the External Control value is set to '2' in the MIDI pages, and will always be ignored by a Kawai K5. As you must realise, a master keyboard slider assigned to MIDI Controller 2 would be difficult to label!
Reading the Control Change section of any MIDI Implementation Chart (located at the back of most owner's manuals) can provide all sorts of interesting information about MIDI Controllers. Portamento time (MIDI Controller 5) is one commonly occurring entry which almost never has a front panel control - the only easy way to access this feature is by using a MIDI Controller message. One of the first areas of the MIDI Implementation Chart that a MIDI expert looks at is the Control Change area - because many hidden functions can hide there. (The accompanying 'Control Change' sidebar shows some examples.)
So how do you use these unusual Controllers? The sidebar on 'Mapping' offers some suggestions. For simple exploration with a computer I have written a small program for the Atari ST which lets you choose any Controller number and control it with the mouse.
This is an early version of a simple MIDI Controller utility program which will eventually be converted to a desk accessory. The current program works on both monochrome (hi-res) and colour (medium-res) ST monitors, but you need to make sure that you have the appropriate Resource file present before the program will run - MC03MR.RSC for monochrome and MC03CMR.RSC for colour.
You will need to double-click on MC03MR.PRG to run the program. Once the main dialogue box is present, you can choose the channel - changing MIDI channel is merely a matter of clicking on the number box in the Channel box. Then choose one of the four central buttons - Volume, ModWheel or User buttons to indicate which MIDI Controller number you want to control. The User buttons need to have a figure typed in if you want a different value to the presets.
The cursor will now change to a cross hair, and the '000' display at the top right will display a number. Moving the mouse back and forth will now change the number: 0 is at the bottom of the screen, 127 is at the top. There are 'dead' zones near the top and bottom so that sending a value of 0 or 127 (to simulate on/off switches) is easy. The rest of the screen is organised so that upward mouse movement increases the value and downward movement decreases it.
No MIDI Controller messages are being sent whilst you move the mouse. To send a message, just press the left mouse button - the ST will 'beep' and the message will be sent. You can hold the left button down if you want to send continuous control messages. To stop sending messages for a particular Controller, press the right mouse button. The cursor will change back to a pointer and you can then choose another button and proceed as before.
Now is the time to do some investigating of your own. Try monitoring the MIDI Out of an instrument and see what happens when you use the performance controls. Look at the MIDI Implementation Charts for your equipment and try controlling a few parameters externally - Volume can be particularly useful since a single master keyboard volume pedal can control all of your expanders!
To reinforce the idea that these are really editing controls which can be used via MIDI, try looking at the portamento time parameter whilst you are changing it by using MIDI Controller 5. Assuming that the particular piece of equipment you are using updates its parameter display in real time when Controllers are editing parameters, you should see the value change!
The DX7 uses MIDI Controller 6 to control the Data Entry slider - so you can use MIDI Controller messages to alter any parameter by moving to the edit page for that parameter. This is particularly effective if you select the Coarse Frequency parameter on an FM modulator - changing the frequency gives the unusual 'waterfall' effect used by synthesist, Ian Boddy. This external control of parameters can be extended to any device which lets you vary the value of the main editing slider or wheel.
Some strange things have happened to the interpretation of MIDI Controllers since the initial MIDI Specification came out in 1983. Originally it looked as if there would be a rush to establish de facto standards for the Continuous and Switched Controllers (0-63 and 64-95, respectively) - the original first edition of the preliminary Sequential MIDI Specification from 1983 even says that only the pitch bender (then defined as Controller 0) is to be specifically defined, with all others assigned by the manufacturer. It then says that a Controller allocation table must be provided in the owner's manual. As an example, the Prophet 600 (the first MIDI-equipped synth) uses MIDI Controller 1 for the modulation wheel, but reassigns the pitch wheel to the then unused $En message.
These things have a habit of sticking: Controller 1 is still the modulation wheel, and the added pitch wheel ($En) message replaced Controller 0 as a permanent addition to the messages. It looked as if Sequential were setting the scene and so the Controller allocation tables looked certain to be adopted. Instead, the Yamaha conventions for Controllers established by the original DX7 seem to have been adopted by the MIDI Specification - so, although the modulation wheel on a DX7 was Controller 1, the rest of the allocation looks to be virtually arbitrary: the data entry slider at 6, breath controller at 2, foot pedal at 4, portamento time at 5, sustain pedal at 64, portamento on/off at 65, +1 (increment) button at 96 and -1 (decrement) button at 97. This still forms the basis of the Controller assignments used by almost every manufacturer today.
By the time the MIDI 1.0 Specification was issued, it was obvious that most of the general purpose Controllers had already established themselves (see the chart in Part 1, SOS April '89). Any further Controllers would be equipment-specific - which would bring us back to Controller allocation tables. The International MIDI Association (IMA) did seem to want to extend the facilities, because the Registered and Non-Registered Controllers were added to the original specification in order to provide a large number of assignable Controllers with only the loss of eight Controller numbers. It looked as if we would now get the tables of Registered Controller allocations, with the Non-Registered area being a free-for-all.
There does not seem to have been a rush to allocate the Registered or Non-Registered Controllers - in fact, to the best of my knowledge, only Registered Parameter Controller (RPC, as it is known) 00 has been formally defined as Pitch Bend Sensitivity. Kawai use RPC 01 for the master Fine Tuning. The MIDI 1.0 Specification says that "all sound parameters of an instrument should be accessible via RPC or Non-RPC numbers." With 14-bit numbers (0 to 32,768 with both numbers used) there is more than enough room for all the FM parameters, all the LA parameters etc.
What actually seems to have happened is that everyone has followed Yamaha's example of the DX7 again. [No doubt, due to that machine's phenomenal sales - Ed.] Tucked away in the System Exclusive MIDI Implementation of the DX7 (Mk1) is a Parameter Change message, designed to enable one DX7 to edit the parameters of another. This was especially useful when you hooked a DX7 up to a TX7 expander, because the Data Entry slider could be used to control the volume of the TX7, but most importantly, extra function memories in the TX7 could send the performance parameters - via System Exclusive messages - to the DX7 (which only had one performance function memory) with each Program Change. Yamaha uses System Exclusive messages, with a parameter allocation table, to enable access to any internal parameter via MIDI. This has the advantage that it stops System Exclusive messages designed for another manufacturer's instruments being used as editing commands by a Yamaha instrument.
Unfortunately, because everyone seems to have followed Yamaha's example, we now have the situation where the back pages of an owner's manual is filled with allocation tables - but they are for System Exclusive Parameter messages, not Controllers. And unlike Controller messages, System Exclusive messages do not have to follow the same format - in fact, the whole idea is to leave them to the individual manufacturers' discretion. We thus seem to have arrived at almost the exact opposite of the situation which the IMA intended. This is why most Control Change sections of MIDI Implementation Charts are so sparsely populated - all the parameters are System Exclusive only.
If you wondered why I have returned to MIDI Controllers for this month's topic, you now know! Theoretically, parameter editing should be available via MIDI RPC or Non-RPC numbers, and so would not form part of this series on System Exclusive. In practice, we need to look very closely into the System Exclusive messages in order to do any useful editing at all. What may have looked like a detailed journey into MIDI Controllers has actually transformed itself into more information about System Exclusive data!
Learning to interpret MIDI Implementation Charts will become very useful when we start editing with System Exclusive messages, because the necessary information will often be obscured by several tables of values and lots of other messages. The format of System Exclusive information is often nowhere near as clear and well structured as the Charts.
Familiarity with the language of MIDI will also be a help. By now, if you have been following this series, you should have some idea of the difference between 7-bit and 14-bit Controllers, and you should be able to say what the difference between a standard MIDI Controller and a Registered or Non-Registered Controller is. You should also be familiar with the sort of System Exclusive messages and how to check that they are being transmitted through your MIDI network. How you progress through the material we will be covering in next month's installment of this series will also depend on your knowledge of Hexadecimal and Binary notation. Therefore, I strongly recommend you read the hexadecimal article in this issue (pages 89-90).
Feature by Martin Russ
Previous article in this issue:
Next article in this issue:
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!