"MKS-70 MIDI SysEx Primer - Part II"
-----------------------------------
"MKS-70 MIDI SysEx Primer - Part I" detailed all of the SysEx Patch data sent
in a stream when a button on the front panel is pressed. This section will
cover all of the SysEx Tone data sent in streams, specifically Packets 8, 9,
10 and 11.
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.
-------------------------------------------------------------------------------
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
-------------------------------------------------------------------------------
Let's see what's being sent...
Packet 8:
This packet tells the receiving device (Mac/PC/Controller/etc...) that data for
Tone A (or the Upper Tone), Tone #83 is being sent. 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
(20) Level 1 Tone Level 1 Tone
(01) Group Number 1 = Tone A (or the Upper Tone) Group Number#
(52) Tone# being sent = 52(Hex) + 1 = 82+1 = 83 Tone#
(00) No operation NOP
(F7) End of System Exclusive message Exclusive Status
Packet 9:
Everything in this data stream contains Tone parameter settings like the Tone
name, DCO-1 RANGE, MIXER DYNAMICS, LFO RATE, 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 Tone 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
(20) Level 1 Tone Level 1 Tone
(01) Group Number 1 = Tone A (or the Upper Tone) Group Number#
... and the next 10 bytes contain the name of the Tone. When these SysEx bytes
in Hex are converted into ASCII characters, everything starts to get familiar
for humans;
(20) [space]
(50) P
(49) I
(41) A
(4E) N
(4F) O
(20) [space]
(34) 4
(20) [space]
(20) [space]
... continuing on with the same data packet, the next 49 bytes contain all of
the values for the Tone parameter settings like DCO-1 RANGE, MIXER DYNAMICS,
LFO RATE, etc...
(Hex) Decimal Patch Parameter
----- ------- ---------------
(20) 32 (undefined)
(20) 32 DCO-1 RANGE
(60) 96 DCO-1 WAVEFORM
(00) 0 DCO-1 TUNE
(00) 0 DCO-1 LFO MOD DEPTH
(00) 0 DCO-1 ENV MOD DEPTH
(60) 96 DCO-2 RANGE
(20) 32 DCO-2 WAVEFORM
(00) 0 DCO-2 CROSSMOD
(76) 118 DCO-2 TUNE
(00) 0 DCO-2 FINE TUNE
(00) 0 DCO-2 LFO MOD DEPTH
(00) 0 DCO-2 ENV MOD DEPTH
(7F) 127 (undefined)
(7F) 127 (undefined)
(7F) 127 (undefined)
(40) 64 DCO DYNAMICS
(60) 96 DCO ENV MODE
(52) 82 MIXER DCO-1
(42) 66 MIXER DCO-2
(7F) 127 MIXER ENV MOD DEPTH
(60) 96 MIXER DYNAMICS
(60) 96 MIXER ENV MODE
(00) 0 HPF CUTOFF FREQ
(2C) 44 VCF CUTOFF FREQ
(1B) 27 VCF RESONANCE
(00) 0 VCF LFO MOD DEPTH
(14) 20 VCF ENV MOD DEPTH
(62) 98 VCF KEY FOLLOW
(40) 64 VCF DYNAMICS
(60) 96 VCF ENV MODE
(7F) 127 VCA LEVEL
(20) 32 VCA DYNAMICS
(20) 32 CHORUS
(20) 32 LFO WAVEFORM
(00) 0 LFO DELAY TIME
(67) 103 LFO RATE
(00) 0 ENV-1 ATTACK TIME
(40) 64 ENV-1 DECAY TIME
(30) 48 ENV-1 SUSTAIN LEVEL
(50) 80 ENV-1 RELEASE TIME
(20) 32 ENV-1 KEY FOLLOW
(00) 0 ENV-2 ATTACK TIME
(4F) 79 ENV-2 DECAY TIME
(00) 0 ENV-2 SUSTAIN LEVEL
(29) 41 ENV-2 RELEASE TIME
(20) 32 ENV-2 KEY FOLLOW
(7F) 127 (undefined)
(40) 64 VCA ENV MODE
And the last byte of data from Packet 9 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 Tone 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 Tone parameter settings that match up with what you
see on the MKS-70 front panel display.
Continuing on, we analyze the SysEx data from Packet 9;
The first Tone parameter setting shown above is for DCO-1 RANGE which is
byte 18 (starting at byte zero). It is 20(Hex) or 32(Dec). There are only
four settings to choose from for this parameter;
2' 4' 8' 16'
Roland uses a special table to select the correct values. Inside the MKS-70
it is interpreted as;
0 to 31 = 16'
32 to 63 = 8'
64 to 95 = 4'
96 to 127 = 2'
The DCO-2 RANGE Tone parameter also use this same table to select the correct
values;
Converted
(Hex) Decimal For Display Tone Parameter
----- ------- ----------- ---------------
(20) 32 8' DCO-1 RANGE
(60) 96 2' DCO-2 RANGE
-------------------------------------------------------------------------------
Tone parameter settings for DCO DYNAMICS, MIXER DYNAMICS, VCF DYNAMICS VCA
DYNAMICS, HPF CUTOFF FREQ, ENV-1 KEY FOLLOW and ENV-2 KEY FOLLOW use a similar
scheme and table as shown above. The range is from;
OFF 1 2 3
... and inside the MKS-70 it is interpreted as;
0 to 31 = OFF (or 0 for HPF CUTOFF FREQ)
32 to 63 = 1
64 to 95 = 2
96 to 127 = 3
Converted
(Hex) Decimal For Display Tone Parameter
----- ------- ----------- ---------------
(40) 64 2 DCO DYNAMICS
(60) 96 3 MIXER DYNAMICS
(00) 0 0 HPF CUTOFF FREQ
(40) 64 2 VCF DYNAMICS
(20) 32 1 VCA DYNAMICS
(20) 32 1 ENV-1 KEY FOLLOW
(20) 32 1 ENV-2 KEY FOLLOW
-------------------------------------------------------------------------------
There is a large section of Tone parameter settings which are scaled from 00 to
99. As explained in Part I, these settings are multiplied by 0.78 to convert
them from the 0 to 127 MKS-70 scale;
Converted
(Hex) Decimal For Display Tone Parameter
----- ------- ----------- ---------------
(00) 0 00 DCO-1 LFO MOD DEPTH
(00) 0 00 DCO-1 ENV MOD DEPTH
(00) 0 00 DCO-2 LFO MOD DEPTH
(00) 0 00 DCO-2 ENV MOD DEPTH
(52) 82 63 MIXER DCO-1
(42) 66 51 MIXER DCO-2
(7F) 127 99 MIXER ENV MOD DEPTH
(2C) 44 34 VCF CUTOFF FREQ
(1B) 27 21 VCF RESONANCE
(00) 0 00 VCF LFO MOD DEPTH
(14) 20 15 VCF ENV MOD DEPTH
(62) 98 76 VCF KEY FOLLOW
(7F) 127 99 VCA LEVEL
(00) 0 00 LFO DELAY TIME
(67) 103 80 LFO RATE
(00) 0 00 ENV-1 ATTACK TIME
(40) 64 50 ENV-1 DECAY TIME
(30) 48 37 ENV-1 SUSTAIN LEVEL
(50) 80 62 ENV-1 RELEASE TIME
(00) 0 00 ENV-2 ATTACK TIME
(4F) 79 61 ENV-2 DECAY TIME
(00) 0 00 ENV-2 SUSTAIN LEVEL
(29) 41 31 ENV-2 RELEASE TIME
i.e. 82 * 0.78 = 63
66 * 0.78 = 51
127 * 0.78 = 99 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.
-------------------------------------------------------------------------------
DCO-1 WAVEFORM and DCO-2 WAVEFORM has four settings to choose from;
NOISE SQUARE WAVE PULSE WAVE SAWTOOTH WAVE
Roland uses a special table to select the correct values. Inside the MKS-70
it is interpreted as;
0 to 31 = NOISE
32 to 63 = SQUARE WAVE
64 to 95 = PULSE WAVE
96 to 127 = SAWTOOTH WAVE
Converted
(Hex) Decimal For Display Tone Parameter
----- ------- ----------- ---------------
(60) 96 SAWTOOTH DCO-1 WAVEFORM
(20) 32 SQUARE DCO-2 WAVEFORM
-------------------------------------------------------------------------------
Similarly, DCO ENV MODE, MIXER ENV MODE and VCF ENV MODE have four settings to
choose from;
ENV-1 NORMAL ENV-1 INVERTED ENV-2 NORMAL ENV-2 INVERTED
Roland uses a special table to select the correct values. Inside the MKS-70
it is interpreted as;
0 to 31 = ENV-2 INVERTED
32 to 63 = ENV-2 NORMAL
64 to 95 = ENV-1 INVERTED
96 to 127 = ENV-1 NORMAL
Converted
(Hex) Decimal For Display Tone Parameter
----- ------- ----------- ---------------
(60) 96 ENV-1 NORMAL DCO ENV MODE
(60) 96 ENV-1 NORMAL MIXER ENV MODE
(60) 96 ENV-1 NORMAL VCF ENV MODE
-------------------------------------------------------------------------------
Similarly, DCO-2 CROSSMOD has four settings to choose from;
OFF SYNC 1 SYNC 2 XMOD
Roland uses a special table to select the correct values. Inside the MKS-70
it is interpreted as;
0 to 31 = OFF
32 to 63 = SYNC 1
64 to 95 = SYNC 2
96 to 127 = XMOD
Converted
(Hex) Decimal For Display Tone Parameter
----- ------- ----------- ---------------
(00) 0 OFF DCO-2 CROSSMOD
-------------------------------------------------------------------------------
LFO WAVEFORM has three settings;
RANDOM SQUARE WAVE TRIANGLE WAVE
Roland uses a special table to select the correct values. Inside the MKS-70
it is interpreted as;
0 to 31 = RANDOM
32 to 63 = SQUARE WAVE
64 to 127 = TRIANGLE WAVE
Converted
(Hex) Decimal For Display Tone Parameter
----- ------- ----------- ---------------
(20) 32 SQUARE WAVE LFO WAVEFORM
-------------------------------------------------------------------------------
CHORUS has three settings;
OFF 1 2
Roland uses a special table to select the correct values. Inside the MKS-70
it is interpreted as;
0 to 31 = OFF
32 to 63 = 1
64 to 127 = 2
Converted
(Hex) Decimal For Display Tone Parameter
----- ------- ----------- ---------------
(20) 32 1 CHORUS
-------------------------------------------------------------------------------
VCA ENV MODE has two settings;
GATE ENV-2 NORMAL
Roland uses a special table to select the correct values. Inside the MKS-70
it is interpreted as;
0 to 63 = GATE
64 to 127 = ENV
Converted
(Hex) Decimal For Display Tone Parameter
----- ------- ----------- ---------------
(40) 64 ENV VCA ENV MODE
-------------------------------------------------------------------------------
The conversion settings for DCO-2 FINE TUNE work the same as the Patch
parameter settings for DUAL DETUNE, A UNISON DETUNE and B UNISON DETUNE as
explained in "MKS-70 MIDI SysEx Primer - Part I".
The DCO-2 FINE TUNE settings on the front panel show a range from -50 up to
+50. The formula to convert this scale is;
/ \
| SysEx Value 100 Fine Tune Steps | Fine Tune
| Converted To * ------------------- | - Scale = DCO-2 FINE TUNE
| Decimal 127 MKS-70 Steps | Value (Round Down)
\ /
( 0 * 0.789 ) - 50 = -50
Converted
(Hex) Decimal For Display Tone Parameter
----- ------- ----------- ---------------
(00) 0 -50 DCO-2 FINE TUNE
-------------------------------------------------------------------------------
The conversion settings for DCO-1 TUNE and DCO-2 TUNE work similarly to the
Tone parameter settings shown above for DCO-2 FINE TUNE.
The DCO-1 TUNE and DCO-2 TUNE settings on the front panel show a range from
-12 up to +12. The formula to convert this scale is;
/ \
| SysEx Value 24 Tune Steps | Tune
| Converted To * ---------------- | - Scale = TUNE
| Decimal 127 MKS-70 Steps | Value (Round Down)
\ /
( 0 * 0.189 ) - 12 = -12
( 118 * 0.189 ) - 12 = +10
Converted
(Hex) Decimal For Display Tone Parameter
----- ------- ----------- ---------------
(00) 0 -12 DCO-1 TUNE
(76) 118 +10 DCO-2 TUNE
------------------------------------------------------------------------------- Byte numbers 17, 30, 31, 32 and 64 are listed by Roland as (undefined).
-------------------------------------------------------------------------------
Here is a list of all Tone parameters sent via SysEx for the Tone named
PIANO 4 and all of the corresponding conversions as explained above. Once
again, the leftmost column is the exact SysEx data stream from Packet 9 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
(20) not displayed Byte 5 = Stream information is Tone data
(01) not displayed Byte 6 = Group Number 1 (Tone A / Upper)
(20) 32 space (ASCII) Byte 7 = 1ST LETTER/NUMBER/SYMBOL OF NAME
(50) 80 P (ASCII) Byte 8 = 2ND LETTER/NUMBER/SYMBOL OF NAME
(49) 73 I (ASCII) Byte 9 = 3RD LETTER/NUMBER/SYMBOL OF NAME
(41) 65 A (ASCII) Byte 10 = 4TH LETTER/NUMBER/SYMBOL OF NAME
(4E) 78 N (ASCII) Byte 11 = 5TH LETTER/NUMBER/SYMBOL OF NAME
(4F) 79 O (ASCII) Byte 12 = 6TH LETTER/NUMBER/SYMBOL OF NAME
(20) 32 space (ASCII) Byte 13 = 7TH LETTER/NUMBER/SYMBOL OF NAME
(34) 52 4 (ASCII) Byte 14 = 8TH LETTER/NUMBER/SYMBOL OF NAME
(20) 32 space (ASCII) Byte 15 = 9TH LETTER/NUMBER/SYMBOL OF NAME
(20) 32 space (ASCII) Byte 16 = 10TH LETTER/NUMBER/SYMBOL OF NAME
(20) 32 - - - - - - - Byte 17 = (undefined)
(20) 32 8' (2/4/8/16) Byte 18 = DCO-1 RANGE
(60) 96 SAWTOOTH Byte 19 = DCO-1 WAVEFORM
(00) 0 -12 (-12/+12) Byte 20 = DCO-1 TUNE
(00) 0 0 (00/99) Byte 21 = DCO-1 LFO MOD DEPTH
(00) 0 0 (00/99) Byte 22 = DCO-1 ENV MOD DEPTH
(60) 96 2' (2/4/8/16) Byte 23 = DCO-2 RANGE
(20) 32 SQUARE Byte 24 = DCO-2 WAVEFORM
(00) 0 OFF (OFF/ON) Byte 25 = DCO-2 CROSSMOD
(76) 118 +10 (-12/+12) Byte 26 = DCO-2 TUNE
(00) 0 -50 (-50/+50) Byte 27 = DCO-2 FINE TUNE
(00) 0 0 (00/99) Byte 28 = DCO-2 LFO MOD DEPTH
(00) 0 0 (00/99) Byte 29 = DCO-2 ENV MOD DEPTH
(7F) 127 - - - - - - - Byte 30 = (undefined)
(7F) 127 - - - - - - - Byte 31 = (undefined)
(7F) 127 - - - - - - - Byte 32 = (undefined)
(40) 64 2 (OFF/1/2/3) Byte 33 = DCO DYNAMICS
(60) 96 n1 (n1u1n2u2) Byte 34 = DCO ENV MODE
(52) 82 63 (00/99) Byte 35 = MIXER DCO-1
(42) 66 51 (00/99) Byte 36 = MIXER DCO-2
(7F) 127 99 (00/99) Byte 37 = MIXER ENV MOD DEPTH
(60) 96 3 (OFF/1/2/3) Byte 38 = MIXER DYNAMICS
(60) 96 n1 (n1u1n2u2) Byte 39 = MIXER ENV MODE
(00) 0 0 (0/1/2/3) Byte 40 = HPF CUTOFF FREQ
(2C) 44 34 (00/99) Byte 41 = VCF CUTOFF FREQ
(1B) 27 21 (00/99) Byte 42 = VCF RESONANCE
(00) 0 0 (00/99) Byte 43 = VCF LFO MOD DEPTH
(14) 20 15 (00/99) Byte 44 = VCF ENV MOD DEPTH
(62) 98 76 (00/99) Byte 45 = VCF KEY FOLLOW
(40) 64 2 (OFF/1/2/3) Byte 46 = VCF DYNAMICS
(60) 96 n1 (n1u1n2u2) Byte 47 = VCF ENV MODE
(7F) 127 99 (00/99) Byte 48 = VCA LEVEL
(20) 32 1 (OFF/1/2/3) Byte 49 = VCA DYNAMICS
(20) 32 2 (OFF/1/2) Byte 50 = CHORUS
(20) 32 SQ (RN/SQ/TR) Byte 51 = LFO WAVEFORM
(00) 0 0 (00/99) Byte 52 = LFO DELAY TIME
(67) 103 80 (00/99) Byte 53 = LFO RATE
(00) 0 0 (00/99) Byte 54 = ENV-1 ATTACK TIME
(40) 64 50 (00/99) Byte 55 = ENV-1 DECAY TIME
(30) 48 37 (00/99) Byte 56 = ENV-1 SUSTAIN LEVEL
(50) 80 62 (00/99) Byte 57 = ENV-1 RELEASE TIME
(20) 32 1 (OFF/1/2/3) Byte 58 = ENV-1 KEY FOLLOW
(00) 0 0 (00/99) Byte 59 = ENV-2 ATTACK TIME
(4F) 79 61 (00/99) Byte 60 = ENV-2 DECAY TIME
(00) 0 0 (00/99) Byte 61 = ENV-2 SUSTAIN LEVEL
(29) 41 31 (00/99) Byte 62 = ENV-2 RELEASE TIME
(20) 32 1 (OFF/1/2/3) Byte 63 = ENV-2 KEY FOLLOW
(7F) 127 - - - - - - - Byte 64 = (undefined)
(40) 64 ENV (GATE/ENV) Byte 65 = VCA ENV MODE
(F7) 247 not displayed Byte 66 = End of System Exclusive
-------------------------------------------------------------------------------
Packet 10 is almost identical to Packet 8 except byte 6 is 02, not 01. This
indicates that the Tone data stream about to be sent is for Group Number 2,
which is Tone B (or the Lower Tone). Packet 10 tells the receiving device
(Mac/PC/Controller/etc...) that data for Tone #39 is being sent. 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
(20) Level 1 Tone Level 1 Tone
(02) Group Number 2 = Tone B (or the Lower Tone) Group Number#
(26) Tone# being sent = 26(Hex) + 1 = 38+1 = 39 Tone#
(00) No operation NOP
(F7) End of System Exclusive message Exclusive Status
-------------------------------------------------------------------------------
Packet 11 is identical to Packet 9 in structure;
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
(20) not displayed Byte 5 = Stream information is Tone data
(02) not displayed Byte 6 = Group Number 2 (Tone B / Lower)
(48) 72 H (ASCII) Byte 7 = 1ST LETTER/NUMBER/SYMBOL OF NAME
(41) 65 A (ASCII) Byte 8 = 2ND LETTER/NUMBER/SYMBOL OF NAME
(52) 82 R (ASCII) Byte 9 = 3RD LETTER/NUMBER/SYMBOL OF NAME
(4D) 77 M (ASCII) Byte 10 = 4TH LETTER/NUMBER/SYMBOL OF NAME
(4F) 79 O (ASCII) Byte 11 = 5TH LETTER/NUMBER/SYMBOL OF NAME
(31) 49 1 (ASCII) Byte 12 = 6TH LETTER/NUMBER/SYMBOL OF NAME
(20) 32 space (ASCII) Byte 13 = 7TH LETTER/NUMBER/SYMBOL OF NAME
(20) 52 space (ASCII) Byte 14 = 8TH LETTER/NUMBER/SYMBOL OF NAME
(20) 32 space (ASCII) Byte 15 = 9TH LETTER/NUMBER/SYMBOL OF NAME
(20) 32 space (ASCII) Byte 16 = 10TH LETTER/NUMBER/SYMBOL OF NAME
(xx)...
(xx)... and so on... . . . . . . . . .
(xx)...
(F7) 247 not displayed Byte 66 = End of System Exclusive
Bytes 17 through 65 are similar in structure to those shown in the example
above for Packet 9. The only differences are the actual Tone value parameters.
-------------------------------------------------------------------------------
That covers everything the MKS-70 sends when Patch button A-1 is pressed for
ELECTRIC PIANO 1 and gives you a detailed example of all the SysEx messages being sent.
Next Up:
'MKS-70 MIDI SysEx Primer - Part III'
-or-
Jump To The Beginning:
'MKS-70 MIDI SysEx Primer - Part I'
|