SUPER JX ZONE


"MKS-70 MIDI SysEx Primer - Part III"
------------------------------------

If you are deciphering MKS-70, JX-10 or any other type of synthesizer SysEx
data streams and they don't match up with what you were expecting to see,
it is important to note that some manufacturers break up the stream into
different sections of bytes. I have noticed that when viewing an MKS-70 or
JX-10 SysEx data file saved to disk, it is in a binary format. When using a
Hex viewer to read the data, the first eight bytes of information look OK and
is recognizable but the rest looks like garbage.

For example, viewing an MKS-70 or JX-10 SysEx binary data file on the hard
drive looks like this for the first line;
 
F0  41  37  00  24  30  01  02  00  02  00  04  05  04  0C  04  05  04  03  05
04  05  02  04  09  04  03  02  00  05  00  04  09  04  01  04  0E  04  0F  02
00  00  01  04  0D  05  0F  02  07  02  06  00  01  00  00  00  00  07  05  00
00  00  00  00  00  05  02  00  00  00  00  02  00  00  01  00  02  00  00  00
01  07  0B  02  06  00  00  00  00  04  01  00  01  01  0F  00  00  00  01  07
0F  05  0A  00  01  01  0A  00  00  00  00  00  00  0F  07

OK, so... the first seven bytes are recognizable as SysEx packet header data;

<-------SysEx Header Data----> (File data type, Synthesizer info, etc...)
F0  41  37  00  24  30  01  00 . .  .   .

The rest doesn't look familiar....
02  00  02  00  04  05  04  0C  04  05  04  03  05  04  05  02  04  09  04  03
02  00  05  00  04  09  04  01  04  0E  04  0F  02  00  00  01  04  0D  05  0F
02  07  02  06  00  01  00  00  00  00  07  05  00  00  00  00  00  00  05  02
00  00  00  00  02  00  00  01  00  02  00  00  00  01  07  0B  02  06  00  00
00  00  04  01  00  01  01  0F  00  00  00  01  07  0F  05  0A  00  01  01  0A
00  00  00  00  00  00  0F  07

What has happened is that when the binary file was created, it separated the
bytes and cut them into two parts. When you take the bytes and join them
together, they instantly turn into the recognizable SysEx data we see when
using a MIDI monitor program to view the SysEx data stream on the computer
screen.

To make the file readable again with Hex characters, we need to strip the
leading zero of each byte and join the result into pairs. The process of
stripping the zeros looks like this;

Everywhere there is an "x", remove a zero;

x   x   x   x   x   x   x   x   x   x   x   x   x   x   x   x   x   x   x   x 
02  00  02  00  04  05  04  0C  04  05  04  03  05  04  05  02  04  09  04  03

The result is this;
 2   0   2   0   4   5   4   C   4   5   4   3   5   4   5   2   4   9   4   3

Now take the result and group the bytes in pairs. The result is this;

  20      20      45      4C      45      43      54      52      49      43
... and so on... . .  .   .    .     .      .       .        .         .

Here is the same first line of the binary file with the first seven bytes
untouched and the rest of the bytes with leading zeros removed and then joined
in pairs;

F0  41  37  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

Look familiar now? YES!!! This is the same data we were working with at the
beginning of this primer. You can see the ELECTRIC PIANO 1 name appear again
in ASCII characters;

<-----SysEx Header Info--> [sp][sp]  E   L   E   C   T   R   I   C  sp   P
F0  41  37  00  24  30  01  20  20  45  4C  45  43  54  52  49  43  20  50

I   A   N   O  [sp]  1	  
49  41  4E  4F  20  01... and so on................

This is how MKS-70 and JX-10 Bulk Dump SysEx data is stored as a binary
file on the hard drive. Now you can read it and make sense of the characters
within.

-------------------------------------------------------------------------------
Some other synthesizers do funky things like this for SysEx data. For example,
a Roland U-20 SysEx Bulk Dump will reverse some of the bytes when sending out
the data stream. This is the first and second line of the factory presets for
a Roland U-20 SysEx Bulk Dump;

F0 41 10 2B 12 00 00 00 0E 07 06 0F 00 0E 00 0B 00 00 00 03 3A F7

F0 41 10 2B 12 01 00 00 03 05 04 07 01 06 0E 06 04 06 01 06 02 07 04 06 00 02
00 02 00 02 00 02 00 01 02 04 0F 03 0F 03 06 00 00 08 04 03 02 03 0F 0F 00 00
00 00 02 00 00 01 02 00 00 00 00 00 00 00 00 00 00 00 00 00 03 05 04 07 01 06
0e 06 04 06 01 06 02 07 04 06 00 02 00 02 00 02 00 02 00 01 02 04 0F 03 0F 03
06 00 00 08 04 03 02 03 0F 0F 00 00 00 00 02 00 00 01 02 00 00 00 00 00 00 00
00 00 00 00 00 00 7B F7 

The first line is telling the receiving device to prepare for a SysEx Patch
data transmission using SysEx Bulk Dump;

<--SysEx Header Data--> (File data type, Synthesizer info, etc...)
F0 41 10 2B 12 00 00 00 0E 07 06 0F 00 0E 00 0B 00 00 00 03 3A F7

The second line is all of the Patch data for Patch #01;
<--SysEx Header Data--> (File data type, Synthesizer info, etc...)
F0 41 10 2B 12 01 00 00 . .  .   .

... and once again, like the MKS-70 SysEx data, the rest isn't familiar....

03 05 04 07 01 06 0E 06 04 06 01 06 02 07 04 06 00 02 00 02 00 02 00 02 00
01 02 04 0F 03 0F 03 06 00 00 08 04 03 02 03 0F 0F 00 00 00 00 02 00 00 01
02 00 00 00 00 00 00 00 00 00 00 00 00 00 03 05 04 07 01 06 0E 06 04 06 01
06 02 07 04 06 00 02 00 02 00 02 00 02 00 01 02 04 0F 03 0F 03 06 00 00 08
04 03 02 03 0f 0F 00 00 00 00 02 00 00 01 02 00 00 00 00 00 00 00 00 00 00
00 00 00 7B F7 

... until you take these bytes and reverse them in sets of two and strip off
the leading zeros. For this example, working with only the first few sets
of bytes, everywhere there is an "x", remove the leading zero;

x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x  x
03 05 04 07 01 06 0E 06 04 06 01 06 02 07 04 06 00 02 00 02 00 02 00 02 00

The result is this;
3  5  4  7  1  6  E  6  4  6  1  6  2  7  4  6  0  2  0  2  0  2  0  2  0

Just like we did with the MKS-70 SysEx data, these bytes need to be grouped
in pairs. However, unlike the MKS-70 SysEx data, these pairs for the U-20
need to be reversed after they are grouped. So, "35" becomes "53", "47"
becomes "74" and so on. The result looks like this;

53  74  61  6E  64  61  72  64  20  20  20  20  20  21  F4  F3  63  00 .... 

After converting this data from Hex to ASCII, once again, a pattern starts
to emerge and we can read it;

 S    t    a    n    d    a    r    d  [sp] [sp] [sp] [sp] [sp]
53   74   61   6E   64   61   72   64   20   20   20   20   20

Looking at the LCD Panel on a U-20 for the factory Patch #1 shows the text
which reads;

	I-11  #001 : Standard
	I-11  #001 : Acoust Piano

It's no wonder there are aren't many librarian and editor programs which work
with multiple synthesizers. Compiling all of the SysEx differences between
several synthesizers is a programming nightmare... and... these two examples
are from synthesizers made by the same manufacturer!

-------------------------------------------------------------------------------
If you are using a Mac, you can easily view any binary SysEx file stored on
the hard drive from the Terminal window. Copy the SysEx file you want to view
onto the Desktop, then use this command from the Terminal window;

    hexdump -v -e '1/1 "X%02x"' Desktop/filename.SYX | sed 's/X/\ /g'

          (substitute your SysEx filename for filename.SYX)
Back To:
Back Arrow "MKS-70 MIDI SysEx Primer - Part II"
info@super-jx.com
Questions/Comments?


SUPER JX ZONE