SUPER JX ZONE


"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 UPPER TONE (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 (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 (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 (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:

Forward Arrow 'MKS-70 MIDI SysEx Primer - Part II'
info@super-jx.com
Questions/Comments?


SUPER JX ZONE