Everything You Ever Wanted To Know About System Exclusive (Part 6)
(But Were Too Afraid To Ask!)
Martin Russ continues his detailed investigation into the inner secrets of MIDI's most powerful messages.
Last month we looked at channelised Controller messages and almost completely ignored System Exclusive messages. The reason for including the discussion about MIDI Controllers is that it shows very neatly one way in which you can use MIDI messages to control and edit the Internal parameters of MIDI instruments. To reiterate last month's theme: with the evolving use of MIDI, two separate methods have been used to enable real-time control of values - (i) MIDI Controller messages and (ii) special System Exclusive messages. As a general rule, manufacturers seem to assign MIDI Controllers to provide performance control of standard parameters like modulation, volume, pitch bend sensitivity etc, rather than to provide access to other functions within their equipment. The one notable exception being Ensoniq: one of the few manufacturers to actually provide Controller-based access! Control of individual parameters inside MIDI instruments is usually left to System Exclusive messages.
In complete contrast to the MIDI Controller messages, those messages used for much the same purpose in the System Exclusive domain tend to have no common basis, although the structure of the messages is often the same. Since the whole philosophy behind System Exclusive information is that manufacturers can have a completely free hand in how they use the bytes between the $F0 and the $F7, they have each produced their own similar but usually incompatible parameter codes and value formats in the messages. This is unfortunate for users, because it means that a universal controller for these messages is much more difficult to produce.
The other difference between the System Exclusive data packets used to change parameters and the Bulk Dumps we have so far looked at is their length - editing packets tend to contain a single short message. This message is typically of the following form:
|$F7||EOX End of Exclusive|
Ever wanted to be able to send some System Exclusive editing messages from your Atari ST directly to your MIDI equipment? You need wait no longer! This utility program lets you send any data bytes you like as a System Exclusive message, with a limit of 12 data words. It is very easy to use, as long as you keep a careful track of what you are doing:
1. Choose a manufacturer ID from the box on the left of the dialogue box. If the manufacturer you want is not listed then type in the ID code in the User box in decimal. Most manufacturer ID codes are specified in hexadecimal, so you will need to convert the values (the 'What The Heck's Hex? article in the August 1989 issue of SOS provides a good introduction to hexadecimal).
2. Type in the data you want to send. This should also be in decimal. You can use the cursor keys or the mouse to move around the screen, between the text fields. If you make a mistake, press the ESC key and - this will clear the text field and you can re-type the value.
(Note: If you try to use a data value larger than 127 an alert box will appear asking you if you want to split the data into two words. This only applies to those items of MIDI gear which support this type of 'nibble-ising' - the DX7, for example. Otherwise, just restrict your values to less than 128.)
3. When you are ready, click on the 'Send' button or press the Return key. The data will be sent as shown.
Most simple parameter editing should be possible using this utility. Needless to say, an early version of a program like this is only a sample of the things yet to come - but it has been thoroughly tested and should suffice for most simple investigations. Later versions should include the facility to monitor the MIDI data which is returned (if any) when the message is sent, and I intend converting it to a Desk Accessory format as well. This program works in both medium and high resolution screen modes, but as usual it looks best on a high resolution monochrome screen.
[Events can move very quickly in the music business - barely had I finished typing the above description, than I managed to solve the problems with hexadecimal data entry which I had been experiencing with the next version. So now there are two versions of the System Exclusive Utility program - V0.1 uses Decimal values for everything, and V0.2 uses Hexadecimal values for all data entries (both versions are included on the 'SysEx Toolkit 2' disk). When I have time to do it, they will be combined into a single hex or decimal version (V0.3?).]
Since I cannot encompass every possible piece of equipment that readers are likely to own, it is quite difficult to try and cover editing in any systematic way. Instead, I have decided to highlight some of the editing commands which are representative of the sort of detective work you will need to do in order to use System Exclusive messages for editing. (Good background information and an example for the Roland MT32 can be found in Brian Howarth's excellent MT32 article in the April 1988 issue of SOS.)
Each example that follows will include an excerpt from the manufacturer's documentation, an interpretation and explanation, and then some example editing messages. These should give you some idea of the sort of approaches you will need to adopt. We are now entering the sort of territory where you really do need to be familiar with your MIDI equipment. If you are having trouble, you could try using the SystemScope program from Part 2 of this series, or an alternative MIDI analyser. I warned you early on that things would gradually grow more difficult as the series progressed!
Before you try sending any System Exclusive editing commands, you need to set the receiving instrument so that it will accept them - often this means setting a filter of a flag. The owner's manual will tell you how to do this.
I will start on familiar territory with the Yamaha DX7. Original Mark 1 DX7s did not include any information about the MIDI implementation, so I will refer to the manual which came with the TX7, since this actually tells you about both the DX7 and the TX7. You will need to set 'SYS INFO AVAIL' on the DX7, using Function 8, in order for what follows to work.
As with much early MIDI documentation, my copy of the TX7 manual is actually wrong when it comes to the format for the parameter change message. I said early on in this series that we might come across situations where we would need to be able to verify and interpret the information supplied in manuals, and here is such an example. The manual states that the format looks like this:
DX7 PARAMETER CHANGE
|Parameter Group||0ggg gghh|
|Parameter Number||0ppp pppp|
This table shows us the value of h and p for some interesting parameters (notice that g is 0 for this table). The top part of the table shows the parameters which need altering in order to edit the coarse frequency of the oscillators in each of the DX7 operators, to create a 'waterfall' effect.
On the topic of real-time modifications: remember that real-time control over editing parameters in this way is only possible on a DX7 MkII - on a Mk1 DX7, using System Exclusive to change parameter values mutes the audio output momentarily - so you will still need to move the DX's slider whilst in edit mode to get the effect if you have an old DX7.
By using MIDI System Exclusive commands on a DX7 MkII, we can accomplish exactly the same effect as using MIDI Controller number 6 with the DX7 set to edit the coarse frequency of a suitable oscillator - you will need to choose a suitable modulating Operator (see my 'Practically FM' series: SOS May to October 1988 for guidance), but it usually boils down to the most important modulator. Try looking for the loudest or most significant carrier (at the bottom of the algorithm diagram) and then alter the frequency of the modulator directly above it.
As often happens, placing too much trust in manufacturers' data sheets can cause problems - if you try to alter the Data Entry MIDI Controller (number 6) on a mark 1 DX7 then nothing happens, despite the published MIDI Implementation Chart for the DX7 in the Ferro Technology 'MIDI Implementation Book', which shows that the DX7 Mk1 responds to Controller 6. I will admit here that I am assuming that it will work on a DX7 MkII (I only have a Mk1 DX7, so I cannot test it very easily), because everything else about the mark II's MIDI implementation seems to work fine.
Back to the main story - suitable messages for each DX7 Operator would be:
OP6 $F0, $43, $10, $00, $12, $vv, $F7
OP5 $F0, $43, $10, $00, $27, $vv, $F7
OP4 $F0, $43, $10, $00, $3C, $vv, $F7
OP3 $F0, $43, $10, $00, $51, $vv, $F7
OP2 $F0, $43, $10, $00, $66, $vv, $F7
OP1 $F0, $43, $10, $00, $7B, $vv, $F7
where $vv is a value between 0 and 99 in decimal = 0 to 63 in hexadecimal.
The second half of Table 1 covers two useful parameters for general purpose editing - LFO Speed and Transpose. Typical messages for editing these parameters would look as follows:
LFO Speed $F0, $43, $10, $01, $09, $vv, $F7
Transpose $F0, $43, $10, $01, $10, $vv, $F7
The message for restoring Transpose to its standard value is as follows:
Transpose $F0, $43, $10, $01, $10, $18, $F7
which sets the value to the default of 24, as specified in the note at the base of the table.
Let's now look at an example of something with which I am not immediately familiar - it is also a more complex example! To enable external editing on the Korg M1 you need to set the EXCLUSIVE to ENA in GLOBAL mode. The format of Korg System Exclusive commands, as specified in the owner's manual, is as follows:
KORG M1 PARAMETER CHANGE
|0ppp pppp||Parameter Page (see Tables 5+6)|
|0000 pppp||Parameter Position (see Tables 5+6)|
|0vvv vvvv||Value (LSB bits 6 to 0) (see note 13)|
|0vvv vvvv||Value (MSB bits 15 to 7) (see note 13)|
|SNGL||DBL||VDF 1 (Cutoff/EG Int)||A B C D||E F G H|
Feature by Martin Russ
Previous article in this issue:
Next article in this issue: