Magazine Archive

Home -> Magazines -> Issues -> Articles in this issue -> View

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:

$F0 Sysex
$ii Identification
$F7 EOX End of Exclusive

The three bracketed sections are the problem areas. The [sub-status] bytes are used to indicate the type of message which follows - in the case of editing messages, it will probably be used to indicate that the following bytes are a parameter and its value.

The [parameter] bytes are used to indicate which parameter value follows - these can be a simple numerical code or a paged system which emulates the actual operation of the equipment itself. In the case of a numerical address, the System Exclusive information in the owner's manual usually provides a table listing the parameter numbers, although some pieces of equipment use different tables for different modes, which can be confusing. Where access to parameters is via a paged system, two bytes are often used: the first indicates the page on which the parameter can be found, in exactly the same way as if you were using the front panel controls; whilst the second shows which parameter on that page is the correct one.

The [value] bytes usually comprise either a single 7-bit byte or two bytes to give 14-bit resolution. In some cases the parameter values are 8-bit or 16-bit, therefore a nibble-ised or packed data format is used. Some manufacturers add a checksum byte (a means of determining if data transmission has been achieved correctly) at the end of all System Exclusive messages, but in editing messages this is sometimes ignored.

So, in a typically nine-byte message we have the potential to alter any of the parameter values inside any piece of MIDI equipment. The difficulties typically arise not in the messages themselves, but in decoding the information supplied by the equipment manufacturer in the owner's manual. Once the format has been deciphered, you can then use the information to investigate the possibilities of real-time parameter control.

In order to try out some edits, some method of producing the required System Exclusive messages is needed. Unfortunately, few hardware devices are designed to do this - even master/mother keyboards are usually designed to assign sliders to MIDI Controllers. One exception is the Yamaha KX88 (and the smaller but functionally identical) KX76 master keyboard, which allows short messages to be constructed and transmitted. Also the Axxess MIDI Mapper, a fascinating MIDI message manipulation unit, allows the conversion of ordinary MIDI Controller messages into System Exclusive messages.

However, software is the usual tool employed to generate suitable messages. Hybrid Arts' GenPatch ST lets you create and use System Exclusive editing messages in an interactive environment, and is a powerful tool for investigating this aspect of System Exclusive.

Conventional visual editing programs also implement the messages but are specific to a particular device and (usually) do not allow you to write your own messages. MIDIman from Hollis Research allows you to create almost any message and then control it with a graphical user interface, and in conjunction with Hollis' Trackman sequencer can change any MIDI Controller into any other message.

For anyone without any of the above tools, an essential part of a System Exclusive software toolkit would seem to be a general purpose message transmitter - not surprisingly, I have written one for the Atari ST (available on the SOS Software 'SysExToolkit 2' disk, price £7).

Screen dump from this month's program: MIDI System Exclusive Utility V0.1.


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:


Status $F0
ID $43
Sub-status $10
Parameter Group 0ggg gghh
Parameter Number 0ppp pppp

By now you ought to be able to spot the mistake. But before I reveal what it is I will explain the rest of the format. The $10 is used to indicate that this is an editing or parameter change message. The parameter group byte is made up of five bits-worth of group number (g) and two bits-worth of subgroup number (h). The parameter number itself is just a 7-bit number - ie. from 0 to 127.

And now the mistake: there is no data specified for the value of the parameter - we know which group and which number the parameter is, but there is no byte with the value! Going by the standard form given earlier, you would probably guess that the parameter value byte belongs just before the EOX byte, and you would be right.

In order to sort out the parameter group we need to refer to an extract from a table (see Table 1).


DX7 Voice Parameter Change (g=0)

Subgroup number (h) Parameter number (p) Parameter Data
0 18 OP6 Osc Freq Coarse 0-31
0 39 OP5 Osc Freq Coarse 0-31
0 60 OP4 Osc Freq Coarse 0-31
0 81 OP3 Osc Freq Coarse 0-31
0 102 OP2 Osc Freq Coarse 0-31

123 OP2 Osc Freq Coarse 0-31
1 9 LFO Speed 0-99
1 16 Transpose 0-48*
* Default is 24

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:


Byte Description
$F0,$42,$3n,$19 Exclusive Header
$41 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)

This small box appears in the middle of a detailed section of the M1 manual, showing all of the formats for all the M1 function codes. In the header, n is the MIDI channel number, the $19 is the M1 (and M1R) identification number, and the $41 is the function code itself - in this case it indicates a Parameter Change message. As you can see, the Korg M1 uses a page-based system for referring to parameters - so we need to look at Tables 5 and 6 in the M1 manual, as the above note recommends. Part of Table 5 is reproduced below; it looks like this (Table 6 is similar):

Page Parameter Position
SNGL DBL VDF 1 (Cutoff/EG Int) A B C D E F G H
3 5 71 74

There are two modes in which an M1 sound can be set - Single (SNGL) and Double (DBL). There are different numbers of pages depending upon which mode you are in. The table above shows, on the left-hand side, the page number in each of the two modes. The Parameter section shows the parameters which can be edited on this page, and the (A to H) Position section shows which of the M1's front panel 'soft' buttons would normally be used to select that parameter for editing. In our case, we need to choose a position on the display to correspond with the parameter we want to edit.

The page I have chosen lets us edit the VDF cutoff frequency and the EG intensity. Before you can edit a particular sound you will need to know if it is in Single or Double mode, so that you can send 3 or 5 for the page, as appropriate. To edit the cutoff frequency, for example, the position will be 71.

Note 13 in the owner's manual tells us how to format the data: bits 0 to 6 go into the LSB byte, and bits 7 to 12 go into the MSB byte, with bit 14 placed in the next most significant bit of the MSB, after the forced 0. Referring to Table 1 tells us that the values we can use for the cutoff frequency parameter range from 0 to 63, so we should only be using the lower byte for values.

Taking all this into consideration, a suitable editing message should look like this:

$F0, $42, $3n, $19, $42, $03 (or $05), $47 (hex for 71 decimal), $00, $cc, $F7

where cc is the filter cutoff value. I have not got an M1 to try this on, so you might find that I have misinterpreted something - but if I have, perhaps you can do better!

One final, slightly more esoteric, example this month can form the basis of further research if you are interested. In some cases, identical or very similar messages to the System Exclusive editing messages we have been using are output by MIDI equipment whenever you edit using the front panel controls. These strings of editing messages can be sent to a 'slave' device, which will then duplicate the changes. Alternatively, the messages could be recorded and saved for later playback, or even for educational purposes.

You should have plenty there to keep you busy for the rest of the month. Due to the detailed nature of the information I am giving and the space it occupies, I will return to this same editing theme next month with even more examples.


The System Exclusive Utility program referred to in this article (plus other useful programs) is available on the 'SysEx Toolkit 2' disk, price £7.

SOS Software, (Contact Details).


Previous Article in this issue

Tape Manipulation

Next article in this issue

Peter Gabriel - Passion

Sound On Sound - Copyright: SOS Publications Ltd.
The contents of this magazine are re-published here with the kind permission of SOS Publications Ltd.


Sound On Sound - Sep 1989

Donated & scanned by: Mike Gorman




System Exclusive

Part 1 | Part 2 | Part 3 | Part 4 | Part 5 | Part 6 (Viewing) | Part 7 | Part 8 | Part 9 | Part 10 | Part 11 | Part 12

Feature by Martin Russ

Previous article in this issue:

> Tape Manipulation

Next article in this issue:

> Peter Gabriel - Passion

Help Support The Things You Love

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!

Donations for October 2021
Issues donated this month: 8

New issues that have been donated or scanned for us this month.

Funds donated this month: £30.00

All donations and support are gratefully appreciated - thank you.

If you're enjoying the site, please consider supporting me to help build this archive...

...with a one time Donation, or a recurring Donation of just £2 a month. It really helps - thank you!

Small Print

Terms of usePrivacy