Sysex: abbreviation of System Exclusive
Class of MIDI messages allowing non normalized data exchange
(every manufacturer owning an ID number can create some)
Sysexs allow to communicate with the keyboard, and to change any internal
parameter. Data are written in hexadecimal. Here are some
explanations on Korg X3 Sysex:
Every sysex is constituted by four elements:
Some examples are shown here
Header
The header includes
manufacturer code and keyboard model code. This allows the
keyboard to "know" if the received sysex is really send
for it (absolutely necessary if several keyboards are plugged together). The Korg X3 header is:
F0 42 3g 35
F0 |
Exclusive
status |
42 |
Korg ID |
3g |
Global channel |
35 |
X3 ID |
(page
190 of the operating manual)
The different values of g
are listed below:
Global midi
channel | 1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
g value |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
A |
B |
C |
D |
E |
F |
Usually,
the keyboard's global midi channel is equal to 1. So the header
is F0 42 30 35
function code
The header is followed by he function code
(enabled function codes are shown below):
code function |
Description
|
42 |
Mode Data |
47 |
All Drum Sound (PCM Card) Name Dump |
45 |
All Multisound
Sound (PCM Card) Name Dump |
4E |
Mode Change |
41 |
Parameter Change |
53 |
Drumkit Parameter
Change |
40 |
Program Parameter
Dump |
4C |
All Program
Parameter Dump |
49 |
Combination Parameter Dump |
4D |
All Combination Parameter Dump |
48 |
All Sequence Data Dump |
51 |
Global Data Dump |
52 |
Drums Data Dump |
50 |
All Data (Global,
Drum, Combi) Dump |
26 |
Received Message
Format Error |
23 |
Data Load
Complete |
24 |
Data Load Error |
21 |
Write Completed |
22 |
Write Error |
(page
190 of the operating manual)
data
In general
case, this part of the sysex includes two things: the parameter
number that we will to change, and the new value for this
parameter. Those two informations are each represented by two
Bytes: LSB MSB (Low Significant Byte / Most Significant Byte).
Consequently, you must write the parameter number and its value
in a reversed way. Here is a concrete example: Consider
we want to change the parameter number 1 and to give it the 5
value
The
parameter number is 00 01, and we will write it 01 00 (reversed)
The
parameter value is 00 05, and we will write it 05 00
(reversed)
So you have to send 01 00 05 00.
End of sysex
message
Every sysex message ends
with F7 (EOX = End of exclusive)
Examples
Example 1: mode change
We will
see in this example how to change Korg X3 modes, (i.e. PROGAM,
COMBI, EDIT PROGRAM, EDIT COMBI, SEQ, EDIT SEQ, GLOBAL et DISK
modes).
We can see
here that the mode
change function code is 4E
The use of this code function is shown below:
Bytes |
Description |
F0 42 3g 35 |
header |
4E |
Mode Change |
0m |
Mode data |
00 |
|
F7 |
EOX |
(page 193 of the operating
manual)
The mode is given by the m value:
0: Combination |
3: Edit Program |
6: Global |
1: Edit Combi |
4: Sequencer |
7: Disk |
2: Program |
5: Edit
Sequencer |
|
(note 11, page 195 of the operating manual)
To work in
the combination mode for example, you have to send the following
sysex (global channel 1):
F0 42 30 35 4E 00 00 F7
And for the sequencer mode:
F0 42 30 35 4E 04 00 F7
Easy,
isn't it ?
You can
put this at the beginning of a song (with cubase or cakewalk for
example). This will put the Korg X3's mode to sequencer when you
start playing the song.
Example 2: How to change sounds
parameters ?
We will
here change sounds parameters via sysex. More precisely, we will
change the first oscillator's panoramic.We first have to place
the keyboard in the edit program mode by the following
sysex:
F0 42 30 35 4E 03 00 F7.
We can see
in the herethat the mode
change function code is 41
The use of this code function is shown here
Bytes |
Description |
F0 42 3g 35 |
header |
0100 0001 (41) |
Parameter change |
0ppp pppp (pp) |
Parameter number
(LSB) (table 6~9) |
0ppp pppp (pp) |
Parameter number
(MSB) (table 6~9) |
0vvv vvvv (vv) |
Value (LSB
bit6~0) (note 12) |
0vvv vvvv (vv) |
Value (MSB
bit13~7) (note 12) |
1111 0111 (F7) |
EOX |
(note 23,page 194 of the
operating manual)
The notes in italics refer to tables and
notes of the operationg manual, where we can found how to use the
parameterchange function code.Table 6 corresponds to program
parameters. This table shows all the parameters of a sound in the X3. Here isan extract of this table. The parameter that
interrets us is in red color.
N0. |
PARAMETER |
N0 of table 1 |
..... |
.......... |
....... |
20 |
VDA Amplitude |
36 |
JOYSTICK |
21 |
VDF MG Int |
39 |
22 |
Pitch Bend Range |
37 |
23 |
VDF Sweep Int |
38 |
OSC-1 |
24 |
Multisound |
12,13 |
25 |
Level |
65 |
26 |
Octave |
14 |
27 |
Pitch EG Int |
40 |
28 |
A:B
Pan> |
86 |
td>29
td>C Send Level
td>82 bit4~7
td>30
td>D Send Level
td>82 bit0~3
colspan="3">VDF-1
31 |
Cutoff Value |
50 |
32 |
EG Intensity |
53 |
..... |
......... |
......... |
tabe 7 (table 6, page 199 of the
operating manual)
The parameter number that corresponds to the
panoramic is 28. Be careful, this value is expressed in the
decimal system. You have to convert it in the hexadecimal system,
giving 1C. Remind that you must write the function code in
a reversed way. So we write 1C 00. The third column of
table 7 refers to table 1. In this table, the way to calculate
the value to send is explained. Here, we have to refer to number
86 of table 1. Here is an extract of this table:
N0. |
PARAMETER |
DATA (Hex):
VALUE |
..... |
........ |
........... |
VDF-1,
VDA-1 KBD TRACK MODE |
85 |
F-1, A-1 KBD
Track Mode |
*4 |
OSC-1
PANPOT |
86 |
A:B
PAN |
00~1E,FF
*5 |
OSC-2
PARAMETER |
87 --- 133 |
Same
as Osc-1 (40~86) |
..... |
........ |
........... |
table 8 (extact of table 1, page 196 of
the operating manual)
The values
of the panoramic control vary between 00 et 1E. (*5) indicates
that more informations are available:
00 |
A |
.... |
.... |
0F |
CNT |
.... |
.... |
1E |
B |
1F |
PRG (Only Comb.
Seq data) |
FF |
OFF |
table 9 (remark 5, page 196 of the
operating manual)
To set the
panoramic of the first oscillator, you have to send the 00 00
value for a 14A pan, the 01 00 for the 13Avalue, the value 02 00
... (don't forget to write it in a reversed way, 02 00 instead of
00 02).
For example, to set the pan to CNT, you have
to send the 0F 00 value.
Octets |
Description |
F0 42 30 35 |
Header (channel
1) |
41 |
Parameter change |
1C |
oscillator 1
panoramic parameter (LSB) |
00 |
oscillator 1
panoramic parameter (MSB) |
0F |
panoramic value(LSB) |
00 |
panoramic
value(MSB) |
F7 |
EOX |
You have to sent the following sysex: F0 42 30 35 41 1C 00 0F 00 F7
|