Home -> Magazines -> Issues -> Articles in this issue -> View
Everything You Ever Wanted To Know About System Exclusive (Part 5) | |
(But Were Too Afraid To Ask!)Article from Sound On Sound, August 1989 |
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).
123: | 100s | 10s | 1s |
1 | 2 | 3 |
123 = (1X100) + (2X10) + (3X1)
In binary, the values for the powers are different. Using the values 1, 2, 4, 8, 16 etc, we can make up any number. For example, '7' can be constructed from 1+2+4:
7: | 8s | 4s | 2s | 1s |
0 | 1 | 1 | 1 |
7 = (0x8) + (1x4) + (1x2) + (1x1)
By using all four powers in this example, we can express any number from 0 to 15 by using just 4 bits. 0 is 0000 in binary - ie. none of anything! 15 is 8+4+2+1.
Making longer numbers just needs more bits. With 8 bits we can count up to 1+2+4+8+16+32+64+128 = 255. The convention is that the largest power of two is always on the left-hand side, with the smallest power of two (which is 1) on the right-hand side. The left-most bit is called the Most Significant Bit, because it has the largest effect on the value of the binary number. The right-most bit is called the Least Significant Bit, because it only alters the value of the binary number by one. These two terms are abbreviated to MSB and LSB, respectively.
Collections of 8 bits are called bytes. With this in mind you will not be surprised to learn that 4-bit binary numbers are called nibbles. MIDI uses 8-bit bytes to send messages, with the MSB of the first byte set to '0'for Channel messages and set to '1' for System messages. When you write down binary it is usual to split it into nibbles of four bits - this makes it easier to read, eg. 123 in decimal equals 0111 1011 in binary.
Fairlight CMI Series III | Version 3.1 | ||
FUNCTION | TRANSMITTED | RECOGNISED | REMARKS |
Control 0-63 | O | O | any Controller can be |
Change 64-95 | O | O | patched to any CMI parameter. |
This one needs almost no explanation. The 'O's in the Transmitted and Recognised columns indicate that any of the Controllers listed in the Function box can be sent from the Fairlight CMI, or received by it from an external MIDI instrument. The split between 0-63 and 64-95 reflects the pre-1.0 MIDI Specification assignment of Continuous Controllers below 64 and switches above 64. The Remarks column tells us that any MIDI Controller can be used to alter any CMI parameter - this means that you can do all sorts of creative things with MIDI Controllers, like making incoming Volume (7) messages change a different parameter. On lesser instruments, System Exclusive messages can give much the same type of universal control possibilities.
Roland D110 LA Expander | Version 1.0 | ||
FUNCTION | TRANSMITTED | RECOGNISED | REMARKS |
Control Change 1 | X | O | Modulation |
6 | X | ** | Data Entry |
7 | X | O | Volume |
10 | X | O | Pan |
11 | X | O | Expression |
64 | X | O | Hold 1 |
100,101 | X | ** (0) | RPCLSB, MSB |
100,121 | X | O | Reset all Controllers |
** = Registered Parameter Control number:
RPC #0 = Pitch Bend Sensitivity
This chart is more complex. The 'X's in the Transmitted column indicate that this is an expander module - conversely, some master keyboards only transmit and receive nothing, so there the columns would be reversed. MIDI Controller 6 is used to set the most significant 7-bits value of the Registered Parameter Controller number 0, defined as Pitch Bend Sensitivity, and set by using MIDI Controllers 100 and 101. MIDI Controller 10 is interesting because it provides a control not normally associated with the front panel of the D10 (the keyboard version of the D110).
Lexicon LXP1 Effects Processor Version 1.0
FUNCTION | TRANSMITTED | RECEIVED | REMARKS |
Control Change | X | 0-127 |
This is the most sparse chart so far - and yet it actually hints at a hidden treasure for the user of MIDI Controllers. The LXP1 shares one of the very useful characteristics of its larger predecessors, the PCM70 and PCM50: you can assign parameters to MIDI Controllers. In this case, since the LXP1 is an effects unit, we would not expect it to transmit any Controller information, but the 0-127 in the Received column means that we can use any Controller! But what for?
Obviously, in order to interpret this chart we need further information. The traditional place to start looking is at the back of the owner's manual. It turns out that you can use any MIDI Controller (as the chart correctly shows) to control either of the two main front panel knobs. These are called the Decay and the Delay knob, referring to the reverb presets - they have different meanings in the other effects settings. Using what Lexicon call 'Dynamic MIDI', it is possible to assign control of these two knobs to any MIDI Controller - so that you can use your mod wheel or foot pedal to control parameters like these:
- Reverb Time - you can effectively alter the perceived size of the room in real time.
- Pre-Delay in the Reverb effects.
- Length of the Gate Time for the Gated Reverb - so you can vary the gating on a snare, for example.
- Feedback and Depth for the Flange.
- Resonance and Tuning for the Chromatic Resonator.
At last! We are actually getting some real control over useful parameters deep within the unit. Further control is also possible by using System Exclusive messages in many effects units, and this will be covered in a later part of this series.
E-mu Systems Emax Sampler | (V3.0), HD(V1.0/1), SE (V1.1), SE HD (V1.1) | ||
FUNCTION | TRANSMITTED | RECEIVED | REMARKS |
Control Change | O | O | Controllers 0-31 |
Apart from the confusing way that E-mu code their chart - they use an 'X' where the convention is to use a 'O', and a '-' where you would expect a 'O' - this should look promising to your (by now) practised eye. The chart tells us that it expects 14-bit Controllers 0 to 31. As in the example of the Lexicon above, we will now have to delve further to see how these Controllers can be assigned inside the Emax.
The manual says that the incoming MIDI Controllers are exactly the same as the four real-time Controllers already, onboard - the left and right wheels, pressure and the pedal. This gives six Controllers in all - and they can be routed to nine real-time destinations: Pitch, Filter, Level, LFO to Pitch, LFO to Filter, LFO to Level, Attack, Pan and Crossfade. As with the Lexicon, we have access to very pertinent parameters which actually let us edit the sound itself - if only all synthesizers were like this! Actually most of them are - but to get inside we need to use System Exclusive messages.
Just about the best and most flexible MIDI Controller I have found is Hollis Research's MIDIman Universal Editing Controller. This is an ST desk accessory which lets you map one Controller to another, even to System Exclusive messages (more next month on this) if you use it with Hollis Research's Trackman sequencer. The supplied MIDIMIX profile for MIDIman (see screen display) provides comprehensive general purpose control over most MIDI Controllers and can be edited to cover any others. This program definitely gets the Martin Russ seal of approval, since I have been beta-testing it and know exactly how good it is. (P.S. It is also a generic editor!) Mapping thus allows you to re-use your available MIDI Controllers for other purposes. This can be especially useful if you have a limited set of Controllers on your main instrument. If you have a wealth of them available - SynthAxe players, master keyboards, some software programs - then you can use mapping to exploit the expressive potential in a very powerful way.
Read the next part in this series:
All parts in this series:
Part 1 | Part 2 | Part 3 | Part 4 | Part 5 (Viewing) | Part 6 | Part 7 | Part 8 | Part 9 | Part 10 | Part 11 | Part 12
Get Organised! - Keeping Track Of MIDI Connections |
Talking MIDI (Part 1) |
The Strange Case of the Singular Digit |
Wot, No Keyboards? - The Alternative MIDI Controllers Session (Part 1) |
MIDI Muting - Sound Workshop |
General MIDI - A True MIDI Standard? |
Climb Aboard The MIDI Bus (Part 1) |
Technically Speaking |
Technically Speaking |
MIDI Evaluated - info available |
Software Support - Hints, Tips & News From The World Of Music Software |
Dumping Grounds (Part 1) |
Browse by Topic:
Topic:
Series:
Part 1 | Part 2 | Part 3 | Part 4 | Part 5 (Viewing) | Part 6 | Part 7 | Part 8 | Part 9 | Part 10 | Part 11 | Part 12
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!
New issues that have been donated or scanned for us this month.
All donations and support are gratefully appreciated - thank you.
Do you have any of these magazine issues?
If so, and you can donate, lend or scan them to help complete our archive, please get in touch via the Contribute page - thanks!