"MKS-70 MIDI SysEx Primer - Part I"
-----------------------------------
These notes are mostly for my benefit. As I learn more about SysEx, I am
writing down what I've learned so I won't forget it. Others may find this
info useful if they are just starting out to design a new Patch/Tone Editor
Librarian Utility thingy and are trying to decipher the SysEx Input/Output
data streams from a MIDI synth or other device.
If you have ever wondered how SysEx data is converted to a readable format,
this document is for you. Even though it is geared towards a specific Roland
synthesizer, some of this SysEx info can be applied to other brands of synths
and devices using MIDI.
In this example, the MIDI channel used was #1. The parameters for
communication with the computer and the MKS-70 were;
[ 12 CONTROL CHANNEL 1 ]
[ 14 SYSTEM EXCLUSIVE ON ]
Pressing a Patch number button on the front panel (A-1 through H-8) will
result in SysEx data being sent from the MKS-70 to any connected MIDI device
capable of receiving those messages (Mac/PC/Controller/etc...)
Note: The SysEx data streamed when pressing the Patch buttons was made
using an MKS-70 with ROM IC v1.08. Using a different ROM IC version may
produce different results.
When using the factory preset Patch called ELECTRIC PIANO 1, the following
data packets are sent anytime the A-1 Patch is selected by pressing the "A"
button or the "1" button on the front panel of the MKS-70;
Packet 1: F0 41 36 00 24 30 01 12 4D F7
-------------------------------------------------------------------------------
Packet 2: F0 41 36 00 24 30 01 12 4D F7
-------------------------------------------------------------------------------
Packet 3: F0 41 36 00 24 30 01 12 4D F7
-------------------------------------------------------------------------------
Packet 4: F0 41 36 00 24 30 01 18 00 F7
-------------------------------------------------------------------------------
Packet 5: F0 41 36 00 24 30 01 33 00 F7
-------------------------------------------------------------------------------
Packet 6: F0 41 34 00 24 30 01 00 00 F7
-------------------------------------------------------------------------------
Packet 7: F0 41 35 00 24 30 01 20 20 45 4C 45 43 54 52 49 43 20 50 49 41 4E 4F
20 01 4D 5F 27 26 01 00 00 75 00 00 00 52 00 00 20 01 02 00 01 7B 26
00 00 41 01 1F 00 01 7F 5A 01 1A 00 00 00 F7
-------------------------------------------------------------------------------
Packet 8: F0 41 34 00 24 20 01 52 00 F7
-------------------------------------------------------------------------------
Packet 9: F0 41 35 00 24 20 01 20 50 49 41 4E 4F 20 34 20 20 20 20 60 00 00 00
60 20 00 76 00 00 00 7F 7F 7F 40 60 52 42 7F 60 60 00 2C 1B 00 14 62
40 60 7F 20 20 20 00 67 00 40 30 50 20 00 4F 00 29 20 7F 40 F7
-------------------------------------------------------------------------------
Packet 10: F0 41 34 00 24 20 02 26 00 F7
-------------------------------------------------------------------------------
Packet 11: F0 41 35 00 24 20 02 48 41 52 4D 4F 31 20 20 20 20 20 60 20 7F 00 7F
60 20 60 5C 4D 00 00 00 00 00 00 60 00 7F 00 00 60 00 44 6C 00 00 5D
20 60 7F 60 00 00 00 50 00 00 00 00 00 00 29 00 20 20 00 40 F7
-------------------------------------------------------------------------------
OK... let's break down this SysEx data into sections and see what's being sent.
Packets 1, 2, and 3:
These packets contain data for an individual Patch parameter, specifically,
the A/B BALANCE. I have no idea why this data is sent three times or why it is
even sent to begin with. Breaking this data packet down we get;
(Hex) Description MIDI Standard ----- ----------- -------------
(F0) Start of System Exclusive message Exclusive Status
(41) Synthesizer manufacturer = 41 = Roland Roland ID Number#
(36) (IPR) Individual Parameter Operation Code
(00) The MIDI channel used was #1 (0+1) Unit Number#
(24) The data was sent from an MKS-70 Format Type
(30) Information in the file contains Patch data Level 2 Patch
(01) Group Number Group Number#
(12) Parameter #12 = U/L BALANCE Parameter#
(4D) Value = 4D(Hex) Value#
(F7) End of System Exclusive message Exclusive Status
Packet 4:
This packet contains data for an individual Patch parameter, specifically, the
KEY MODE (PART 1). Once again, I have no idea why this data is sent when a
button is pressed to select a Patch. It really has nothing to do with the
information we want to view which is ALL of the Patch data. Breaking down this
data packet we get;
(Hex) Description MIDI Standard ----- ----------- -------------
(F0) Start of System Exclusive message Exclusive Status
(41) Synthesizer manufacturer = 41 = Roland Roland ID Number#
(36) (IPR) Individual Parameter Operation Code
(00) The MIDI channel used was #1 (0+1) Unit Number#
(24) The data was sent from an MKS-70 Format Type
(30) Information in the file contains Patch data Level 2 Patch
(01) Group Number Group Number#
(18) Parameter #18(Hex) = KEY MODE (PART 1) Parameter#
(4D) Value = 0 Value#
(F7) End of System Exclusive message Exclusive Status
Packet 5:
This packet contains data for an individual Patch parameter, specifically,
the KEY MODE (PART 2). And again, why this snippet is sent is a mystery.
My best guess would be that there is some type of bug in the SysEx code
for this particular synth. When breaking down this data packet we get;
(Hex) Description MIDI Standard ----- ----------- -------------
(F0) Start of System Exclusive message Exclusive Status
(41) Synthesizer manufacturer = 41 = Roland Roland ID Number#
(36) (IPR) Individual Parameter Operation Code
(00) The MIDI channel used was #1 (0+1) Unit Number#
(24) The data was sent from an MKS-70 Format Type
(30) Information in the file contains Patch data Level 2 Patch
(01) Group Number Group Number#
(33) Parameter #33(Hex) = KEY MODE (PART 2) Parameter#
(00) Value = 0
(F7) End of System Exclusive message Exclusive Status
Packet 6:
This packet tells the receiving device (Mac/PC/Controller/etc...) that data
for Patch A-1 is being sent. Finally... something with data we can actually
use. Breaking down this data packet shows;
(Hex) Description MIDI Standard ----- ----------- -------------
(F0) Start of System Exclusive message Exclusive Status
(41) Synthesizer manufacturer = 41 = Roland Roland ID Number#
(34) (PGR) Program Number Operation Code
(00) The MIDI channel used was #1 (0+1) Unit Number#
(24) The data was sent from an MKS-70 Format Type
(30) Information in the file contains Patch data Level 2 Patch
(01) Group Number Group Number#
(00) Patch# being sent = Patch# 0 = A-1 Patch#
(00) No operation NOP
(F7) End of System Exclusive message Exclusive Status
Packet 7:
This is where the SysEx data starts to get really interesting. Everything in
this data stream contains Patch parameter settings like the Patch name,
CHASE PLAY TIME, PORTAMENTO TIME, UPPER SPLIT POINT, etc... Breaking down
this data packet reveals;
(Hex) Description MIDI Standard ----- ----------- -------------
(F0) Start of System Exclusive message Exclusive Status
(41) Synthesizer manufacturer = 41 = Roland Roland ID Number#
(35) (APR) All Parameters Operation Code
(00) The MIDI channel used was #1 (0+1) Unit Number#
(24) The data was sent from an MKS-70 Format Type
(30) Information in the file contains Patch data Level 2 Patch
(01) Group Number Group Number#
... plus, the next 18 bytes contain the name of the Patch. When these SysEx
bytes in Hex are converted into ASCII characters, everything starts to get
familiar for humans;
(20) [space]
(20) [space]
(45) E
(4C) L
(45) E
(43) C
(54) T
(52) R
(49) I
(43) C
(20) [space]
(50) P
(49) I
(41) A
(4E) N
(4F) O
(20) [space]
(01) 1
The character for the number 1 at the end of the Patch name is not converted
into an ASCII character. If a Patch name contains a number, it is interpreted
as a regular Hex or Decimal number, not alphanumeric.
Continuing on with the same data packet, the next 35 bytes contain all of the
values for the Patch parameter settings like CHASE PLAY TIME, PORTAMENTO TIME,
UPPER SPLIT POINT, AFTER TOUCH VOLUME, etc...
(Hex) Decimal Patch Parameter
----- ------- ---------------
(4D) 77 A/B BALANCE
(5F) 95 DUAL DETUNE
(27) 39 UPPER SPLIT POINT
(26) 38 LOWER SPLIT POINT
(01) 1 PORTAMENTO TIME
(00) 0 BEND RANGE (PART 1)
(00) 0 KEY MODE (PART 1)
(75) 117 TOTAL VOLUME
(00) 0 AFTER TOUCH VIB
(00) 0 AFTER TOUCH BRI
(00) 0 AFTER TOUCH VOL
(52) 82 A TONE (UPPER TONE NUMBER)
(00) 0 A CHROMATIC SHIFT
(00) 0 A KEY ASSIGN
(20) 32 A UNISON DETUNE
(01) 1 A HOLD
(02) 2 A LFO MOD DEPTH
(00) 0 A PORTAMENTO
(01) 1 A BENDER
(7B) 123 (undefined)
(26) 38 B TONE (LOWER TONE NUMBER)
(00) 0 B CHROMATIC SHIFT
(00) 0 B KEY ASSIGN
(41) 65 B UNISON DETUNE
(01) 1 B HOLD
(1F) 31 B LFO MOD DEPTH
(00) 0 B PORTAMENTO
(01) 1 B BENDER
(7F) 127 (undefined)
(5A) 90 CHASE PLAY LEVEL
(01) 1 CHASE PLAY MODE
(1A) 26 CHASE PLAY TIME
(00) 0 CHASE PLAY SWITCH
(00) 0 KEY MODE (PART 1)
(00) 0 BEND RANGE (PART 2)
And the last byte of the data from Packet 7 tells the receiving device that
the stream of SysEx data has stopped;
(Hex) Description MIDI Standard ----- ----------- -------------
(F7) End of System Exclusive message Exclusive Status
So... that's all of the Patch parameter data so far from our example Patch
called ELECTRIC PIANO 1. Converting all of these values from Hex to Decimal
"kind of" shows us the Patch parameter settings that match up with what you
see on the MKS-70 front panel display.
The MKS-70 uses different scaling to match the Hex numbers up with a Decimal
numbering system for Patch parameter settings. For example, the settings for
TOTAL VOLUME, CHASE PLAY LEVEL, AFTER TOUCH BRILLIANCE and some others are on
a scale from 00 to 99. That is what you, a human, see on the front panel when
you change a setting. Inside the MKS-70, the scale goes from 00 to 127, not 00
to 99. This means the Hex value needs to be scaled down to a Decimal value so
humans can read it correctly on the front panel display. Some of the scaling
conversions are simple. For the 00 to 99 scaling, just divide 99 by 127 to get
0.78. Take that value and multiply it by the number on the MKS-70 scale of
00 to 127.
Continuing on, we analyze the SysEx data from Packet 7;
The first Patch parameter setting shown above is for A/B BALANCE. It is
4D(Hex) or 77(Dec). To get the correct scaling, take 77(Dec) and multiply it
by 0.78. The result is 60(Dec). If you look at the front panel display for the
Patch parameter setting of Patch A-1 ELECTRIC PIANO 1, you will see that the
setting for parameter [ 11 A/B BALANCE ] is 60. Finally! Some of the SysEx
data is readable and starts to fall in line. Other Patch parameter settings
which go from 00 to 99 are shown below. Keep in mind that every Hex number in
the leftmost column is the actual value sent via SysEx for our example Patch
named ELECTRIC PIANO 1;
Converted
(Hex) Decimal For Display Patch Parameter
----- ------- ----------- ---------------
(4D) 77 60 A/B BALANCE
(01) 1 1 PORTAMENTO TIME
(75) 117 91 TOTAL VOLUME
(00) 0 0 AFTER TOUCH VIB
(00) 0 0 AFTER TOUCH BRI
(00) 0 0 AFTER TOUCH VOL
(02) 2 2 A LFO MOD DEPTH
(1F) 31 24 B LFO MOD DEPTH
(5A) 90 70 CHASE PLAY LEVEL
(1A) 26 20 CHASE PLAY TIME
i.e. 77 * 0.78 = 60
1 * 0.78 = 1
117 * 0.78 = 91 and so on...
When multiplying, the end results are rounded down.
Note that sometimes these conversion equations won't always match up
with every parameter 100% of the time. When coding software and entering
these formulas and equations, sometimes you will need to tweak the
numbers to make everything match up perfectly.
So... what about the rest of the values?
Well, the other Hex values converted to Decimal need special scaling just as
the Patch parameter settings which went from 00 to 99. If you change a setting
for CHASE PLAY MODE, the choices are A-B, A-B-B and A-B-A. If you change a
setting for B CHROMATIC SHIFT the choices are -24 up to +24. If you change a
setting for LOWER SPLIT POINT the choices are A0 up to C8. These obviously
won't fall in line simply by multiplying by 0.78. These settings, and others,
will need to be converted separately. Sometimes we will need to use special
tables created by Roland to figure out what in the heck they were thinking
when they designed this MKS-70 SysEx monstrosity.
-------------------------------------------------------------------------------
Some settings are no-brainers because they are either OFF/ON (0/1) or are
simply a straight Hex to Decimal conversion. The OFF/ON parameters are;
Converted
(Hex) Decimal For Display Patch Parameter
----- ------- ----------- ---------------
(01) 1 ON A HOLD
(00) 0 OFF A PORTAMENTO
(01) 1 ON A BENDER
(01) 1 ON B HOLD
(00) 0 OFF B PORTAMENTO
(01) 1 ON B BENDER
(00) 0 OFF CHASE PLAY SWITCH
And here, the A TONE and B TONE numbers inside the MKS-70 go from 00 to 99.
However, on the front panel they are numbered from 1 to 100 so you will need
to add 1 to get the actual Tone number shown on the display.
Converted
(Hex) Decimal For Display Patch Parameter
----- ------- ----------- ---------------
(52) 82 83 A TONE
(26) 38 39 B TONE
-------------------------------------------------------------------------------
Others settings are more complicated. Here, the UPPER SPLIT POINT and LOWER
SPLIT POINT are converted. The range on the keyboard is A0 up to C8 but the Hex
values go from 15(Hex) to 6C(Hex).
15(Hex) = 21(Dec) = Key A0 on an 88-note keyboard
6C(Hex) = 108(Dec) = Key C8 on an 88-note keyboard
For the Patch ELECTRIC PIANO 1, the SysEx bytes in Hex convert to the keys on
the keyboard as B3 and C4.
Using this scale shows how 27(Hex) = 39(Dec) matches up with the note C4
and how 26(Hex) = 38(Dec) matches up with the note B3
Decimal: 0 1....27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42...108
| | | | | | | | | | | | | | | | | |
Key: A0 +A0...C3 +C3 D3 +D3 E3 F3 +F3 G3 +G3 A3 +A3 B3 C4 +C4 D4 +D4....C8
Converted
(Hex) Decimal For Display Patch Parameter
----- ------- ----------- ---------------
(27) 39 C4 UPPER SPLIT POINT
(26) 38 B3 LOWER SPLIT POINT
-------------------------------------------------------------------------------
The A CHROMATIC SHIFT and B CHROMATIC SHIFT settings on the front panel LED
display are -24 up to +24. These values in Hex and Decimal match up as;
0 to +24 = 0(Hex) to 18(Hex) = 0(Dec) to 24(Dec)
-24 to -1 = 68(Hex) to 7F(Hex) = 104(Dec) to 127(Dec)
Converted
(Hex) Decimal For Display Patch Parameter
----- ------- ----------- ---------------
(00) 0 0 A CHROMATIC SHIFT
(00) 0 0 B CHROMATIC SHIFT
NOTE: The settings for our Patch ELECTRIC PIANO 1 shown above are bad examples
because they are zero. If a different patch had an A CHROMATIC SHIFT of -12
and a B CHROMATIC SHIFT of +8, the SysEx values would be;
74(Hex) = (116)Dec = A CHROMATIC SHIFT -12
8(Hex) = (8)Dec = B CHROMATIC SHIFT +8
(Dec) 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118..... 127
|
-24 -23 -22 -21 -20 -19 -18 -17 -16 -15 -14 -13 -12 -11 -10...... -1
Chromatic _________________________________________________________________/
Scale /
0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +10 +11 +12 +13 +14 +15 +16 +17..... +24
|
(Dec) 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17...... 25
-------------------------------------------------------------------------------
The settings for A KEY ASSIGN and B KEY ASSIGN on the front panel LED display
are shown as POLY-1, POLY-2, UNISON-1, UNISON-2, MONO-1 or MONO-2. Inside the
MKS-70 it is interpreted as;
0 = POLY-1
1 = UNISON-1
2 = MONO-1
4 = POLY-2
5 = UNISON-2
6 = MONO-2
Converted
(Hex) Decimal For Display Patch Parameter
----- ------- ----------- ---------------
(00) 0 POLY-1 A KEY ASSIGN
(00) 0 POLY-1 B KEY ASSIGN
-------------------------------------------------------------------------------
The CHASE PLAY MODE has three choices which are A-B, A-B-B or A-B-A.
0 = A-B
1 = A-B-B
2 = A-B-A
Converted
(Hex) Decimal For Display Patch Parameter
----- ------- ----------- ---------------
(01) 1 A-B-B CHASE PLAY MODE
-------------------------------------------------------------------------------
The DUAL DETUNE, A UNISON DETUNE and B UNISON DETUNE settings on the front
panel show a range from -50 up to +50. We need to scale these somehow with the
MKS-70 scale which is 00 to 127. The formula to convert this scale is;
/ \
| SysEx Value 100 Detune Steps | Detune
| Converted To * ---------------- | - Scale = DETUNE (Round Down)
| Decimal 127 MKS-70 Steps | Value
\ /
With real numbers plugged into the equation it makes more sense;
The SysEx value for DUAL DETUNE is 5F(Hex) = 95(Dec)
The SysEx value for A UNISON DETUNE is 20(Hex) = 32(Dec)
The SysEx value for B UNISON DETUNE is 41(Hex) = 65(Dec)
( 95 * 0.787 ) - 50 = 24.765 = +24
( 32 * 0.787 ) - 50 = -24.816 = -24
( 65 * 0.787 ) - 50 = 1.155 = +01
Converted
(Hex) Decimal For Display Patch Parameter
----- ------- ----------- ---------------
(5F) 95 +24 DUAL DETUNE
(20) 32 -24 A UNISON DETUNE
(41) 65 +01 B UNISON DETUNE
-------------------------------------------------------------------------------
HANG ON! This next one is a really weird setting because it is spread out in
the SysEx message. The BEND RANGE (PART 1) setting is sent as the 30th byte
and the BEND RANGE (PART 2) setting is sent as the 59th byte. When joined
together these two bytes determine the overall setting for the BEND RANGE
setting shown on the front panel display.
BEND RANGE (PART 1) = 30th byte
This can be only one of four settings;
0(Hex) = 0(Dec)
20(Hex) = 32(Dec)
40(Hex) = 64(Dec)
60(Hex) = 96(Dec)
BEND RANGE (PART 2) = 59th byte
This can be only one of two settings;
0 or 1
The overall setting is BEND RANGE (PART 1) joined with BEND RANGE (PART 2).
This weird setting deserves an example ;)
Let's use a different Patch other than ELECTRIC PIANO 1. We will use a Patch
which has the BEND RANGE set to 12 when viewed on the front panel display.
The Hex bytes sent via SysEx would be;
60(Hex), the 30th byte, and 01(Hex), the 59th byte
60(Hex) in Binary looks like this 01100000
01(Hex) in Binary looks like this 00000001
The MKS-70 strips off the first two bits of both Binary numbers to get this;
X1100000
X0000001
The MKS-70 then joins these two Binary numbers together to get this;
00000011100000
The MKS-70 then converts this new Binary number to Hex to get this;
00000011100000(Binary) = E0(Hex) = 224(Dec)
The choices from the front panel display for BEND RANGE are 2, 3, 4, 7 or
12. Inside the MKS-70, these are interpreted as;
0(Hex) = 0(Dec) = 2 Semi Tones = BEND RANGE 2
20(Hex) = 32(Dec) = 3 Semi Tones = BEND RANGE 3
40(Hex) = 64(Dec) = 4 Semi Tones = BEND RANGE 4
60(Hex) = 96(Dec) = 7 Semi Tones = BEND RANGE 7
80(Hex) = 128(Dec) = 12 Semi Tones = BEND RANGE 12
A0(Hex) = 160(Dec) = 12 Semi Tones = BEND RANGE 12
C0(Hex) = 192(Dec) = 12 Semi Tones = BEND RANGE 12
E0(Hex) = 224(Dec) = 12 Semi Tones = BEND RANGE 12
For the example above, the MKS-70 did some byte crunching, rearranging,
joining, converting and finally spit out E0(Hex). This shows that the BEND
RANGE = 12
At this point, I would like to say...
"For Christ's sake Roland... make it easy. Just give me ONE fucking number!!"
For our example Patch ELECTRIC PIANO 1, the 30th byte and the 59th byte sent
via SysEx are 00 and 00 so the table above shows this as a BEND RANGE of 2.
Converted
(Hex) Decimal For Display Patch Parameter
----- ------- ----------- ---------------
(00) 0 2 BEND RANGE
-------------------------------------------------------------------------------
This is another weird setting because it is spread out in the SysEx message.
The KEY MODE (PART 1) setting is sent as the 31st byte and the KEY MODE
(PART 2) setting is sent as the 58th byte. When joined together they
determine the overall setting for KEY MODE. The choices from the front panel
display are DUAL, SPLIT, A WHOLE, B WHOLE, X-FADE, T-VOICE and match up as;
KEY MODE (PART 1) = 31st byte
This can be only one of four settings;
0, 1, 2 or 3
KEY MODE (PART 2) = 58th byte
This can be only one of three settings;
0, 1 or 2
The overall KEY MODE setting is KEY MODE (PART 2) joined with KEY MODE (PART 1)
For example, if the 31st byte sent via SysEx was 00 and the 58th byte was 01,
it would match up like this;
KEY MODE (PART 1) = 00 = 00000000(Binary)
KEY MODE (PART 2) = 01 = 00000001(Binary)
The MKS-70 strips off the first six bits of both Binary numbers to get this;
00
01
The MKS-70 then joins these two Binary numbers together to get this;
0100
This is KEY MODE (PART 2) joined with KEY MODE (PART 1) with the Binary
number for KEY MODE (PART 2) at the beginning. Yeah... I know... more Looney
Tunes stuff. Weird!!! The chart to determine the overall KEY MODE setting is;
0 = DUAL
1 = SPLIT
2 = A WHOLE <----BTW - Who at Roland thought "AWHOLE" was a
3 = B WHOLE good word choice for this setting? :)
4 = X-FADE
8 = T-VOICE
0100(Binary) = 4 so the overall KEY MODE setting is 4 which = X-FADE.
Once again, the Patch setting example for ELECTRIC PIANO 1 is boring.
The overall KEY MODE setting is 0 which means it is set to DUAL.
Converted
(Hex) Decimal For Display Patch Parameter
----- ------- ----------- ---------------
(00) 0 0 KEY MODE (PART 1)
(00) 0 0 KEY MODE (PART 2)
OK. Thankfully the weird conversions are over!
-------------------------------------------------------------------------------
Byte numbers 44 and 53 are listed by Roland as (undefined). I have no idea
what these are because... they are "undefined!" :) All I know is that they get
in my way when making tables trying to decipher all of these SysEx messages.
-------------------------------------------------------------------------------
Here is a list of all Patch parameters sent via SysEx for the Patch named
ELECTRIC PIANO 1 and all of the corresponding conversions as explained above.
Once again, the leftmost column is the exact SysEx data stream from Packet 7
of SysEx data sent when Patch number A-1 is pressed on the front panel for
the ELECTRIC PIANO 1 Patch;
Converted
(Hex) Decimal For Display Patch Parameter
----- ------- ----------- ---------------
(F0) not displayed Byte 0 = The data is System Exclusive
(41) not displayed Byte 1 = Synth manufacturer is Roland
(35) not displayed Byte 2 = (APR) - All Parameters Op Code
(00) not displayed Byte 3 = MIDI channel used is #1 (0+1)
(24) not displayed Byte 4 = Data was sent from an MKS-70
(30) not displayed Byte 5 = Stream information is Patch data
(01) not displayed Byte 6 = Group Number
(20) 32 space (ASCII) Byte 7 = 1ST LETTER/NUMBER/SYMBOL OF NAME
(20) 32 space (ASCII) Byte 8 = 2ND LETTER/NUMBER/SYMBOL OF NAME
(45) 69 E (ASCII) Byte 9 = 3RD LETTER/NUMBER/SYMBOL OF NAME
(4C) 76 L (ASCII) Byte 10 = 4TH LETTER/NUMBER/SYMBOL OF NAME
(45) 69 E (ASCII) Byte 11 = 5TH LETTER/NUMBER/SYMBOL OF NAME
(43) 67 C (ASCII) Byte 12 = 6TH LETTER/NUMBER/SYMBOL OF NAME
(54) 84 T (ASCII) Byte 13 = 7TH LETTER/NUMBER/SYMBOL OF NAME
(52) 82 R (ASCII) Byte 14 = 8TH LETTER/NUMBER/SYMBOL OF NAME
(49) 73 I (ASCII) Byte 15 = 9TH LETTER/NUMBER/SYMBOL OF NAME
(43) 67 C (ASCII) Byte 16 = 10TH LETTER/NUMBER/SYMBOL OF NAME
(20) 32 space (ASCII) Byte 17 = 11TH LETTER/NUMBER/SYMBOL OF NAME
(50) 80 P (ASCII) Byte 18 = 12TH LETTER/NUMBER/SYMBOL OF NAME
(49) 73 I (ASCII) Byte 19 = 13TH LETTER/NUMBER/SYMBOL OF NAME
(41) 65 A (ASCII) Byte 20 = 14TH LETTER/NUMBER/SYMBOL OF NAME
(4E) 78 N (ASCII) Byte 21 = 15TH LETTER/NUMBER/SYMBOL OF NAME
(4F) 79 O (ASCII) Byte 22 = 16TH LETTER/NUMBER/SYMBOL OF NAME
(20) 32 space (ASCII) Byte 23 = 17TH LETTER/NUMBER/SYMBOL OF NAME
(01) 01 1 (Number) Byte 24 = 18TH LETTER/NUMBER/SYMBOL OF NAME
(4D) 77 60 (00/99) Byte 25 = A/B BALANCE
(5F) 95 +24 (-50/+50) Byte 26 = DUAL DETUNE
(27) 39 C4 (A0 to G8) Byte 27 = UPPER SPLIT POINT
(26) 38 B3 (A0 to G8) Byte 28 = LOWER SPLIT POINT
(01) 1 1 (00/99) Byte 29 = PORTAMENTO TIME
(00) 0 0* Byte 30 = BEND RANGE (PART 1)
(00) 0 0* Byte 31 = KEY MODE (PART 1)
(75) 117 91 (00/99) Byte 32 = TOTAL VOLUME
(00) 0 0 (00/99) Byte 33 = AFTER TOUCH VIB
(00) 0 0 (00/99) Byte 34 = AFTER TOUCH BRI
(00) 0 0 (00/99) Byte 35 = AFTER TOUCH VOL
(52) 82 83 (Number) Byte 36 = A TONE (UPPER TONE NUMBER)
(00) 0 0 (-24/+24) Byte 37 = A CHROMATIC SHIFT
(00) 0 POLY-1** Byte 38 = A KEY ASSIGN
(20) 32 -24 (-50/+50) Byte 39 = A UNISON DETUNE
(01) 1 ON (OFF/ON) Byte 40 = A HOLD
(02) 2 3 (00/99) Byte 41 = A LFO MOD DEPTH
(00) 0 OFF (OFF/ON) Byte 42 = A PORTAMENTO
(01) 1 ON (OFF/ON) Byte 43 = A BENDER
(7B) 123 - - - - - - - Byte 44 = (undefined)
(26) 38 39 (Number) Byte 45 = B TONE (LOWER TONE NUMBER)
(00) 0 0 (-24/+24) Byte 46 = B CHROMATIC SHIFT
(00) 0 POLY-1** Byte 47 = B KEY ASSIGN
(41) 65 +1 (-50/+50) Byte 48 = B UNISON DETUNE
(01) 1 ON (OFF/ON) Byte 49 = B HOLD
(1F) 31 24 (00/99) Byte 50 = B LFO MOD DEPTH
(00) 0 OFF (OFF/ON) Byte 51 = B PORTAMENTO
(01) 1 ON (OFF/ON) Byte 52 = B BENDER
(7F) 127 - - - - - - - Byte 53 = (undefined)
(5A) 90 70 (00/99) Byte 54 = CHASE PLAY LEVEL
(01) 1 A-B-B Byte 55 = CHASE PLAY MODE
(1A) 26 20 (00/99) Byte 56 = CHASE PLAY TIME
(00) 0 OFF (OFF/ON) Byte 57 = CHASE PLAY SWITCH
(00) 0 0* Byte 58 = KEY MODE (PART 2)
(00) 0 0* Byte 59 = BEND RANGE (PART 2)
(F7) 247 not displayed Byte 60 = End of System Exclusive
Notes:
* These values are joined together then the MKS-70 does some "magic"
and converts the joined bytes to a overall setting for this Patch
parameter
** These values can be POLY-1, POLY-2, MONO-1, MONO-2, UNISON-1 or UNISON-2
*** The Patch used in the above examples is one of the factory defaults. If
you don't have this Patch, you may download it from the PATCHES page. It
is in the file called JX10_MKS70_Collection-A.zip and in the SysEx file
named JX10BNK0-A.SYX.
-------------------------------------------------------------------------------
Packets 8, 9, 10 and 11 are almost identical to the Patch parameter settings
shown above except these packets contain Tone data, not Patch data. I will
break down all of the data contained in Packets 8, 9, 10 and 11 and discuss
that in more detail in Part II.
Next Up:
'MKS-70 MIDI SysEx Primer - Part II'
-or-
Jump To The End:
'MKS-70 MIDI SysEx Primer - Part III'
|