Partially decoded sysex codes and working notes

Synth Settings (Per Mattsson)

Synth Settings (Elby):

Here's a sample sysex stream (34 bytes), with byte numbering beneath it:

F0  33  7C  06  41  01  60  1F  76  0C  0C  01  40  26  5B  6C  47  2B  31  42  72  00  01  63  30  40  6C  12  1B  05  06  60  51  F7
  1    2     3    4    5   6     7    8    9   10  11  12  13   14  15   16  17  18   19  20   21 22  23  24  25  26  27  28   29   30  31  32  33  34

Coding:   The bytes are shown as 8 bits, with A indicating a position is assigned to that field, x indicating the position is filled by another field, and ? indicating the use of that bit has not yet been determined.

    Byte 1 - Sysex start
    Byte 2 - Nord's manufacturer id
    Byte 3 -  ????  ????
    Byte 4 - Nord's product id ?
    Byte 5-6 -  ????  ????

Internal/external clock flag (0 = external, 1 = internal)

Byte 7:    ??A? ???x
  40 = external clock
  60 = internal clock
Min MIDI velocity scale (values 0 - 127)
Byte 7, 8:     ??x?   ???A    AAAx  xxxx
0 = 60 1F
1 = 60 3F
2 = 60 5F
3 = 60 7F
4 = 61 1F
  ...
63 = 6F 7F
64 = 70 1F
  ...
127 = 7F 7F


LEDs active flag (0=inactive, 1=active)

Byte 8:  xxxA  xxxx
0F = inactive
1F = active
Max MIDI velocity scale (0-127)
Byte 8, 9:   xxxx  AAAA    ?AAA  xxxx
0 = 10 06
1 = 10 16
2 = 10 26
3 = 10 36
4 = 10 46
5 = 10 56
6 = 10 66
7 = 10 76
8 = 11 06
  ...
127 = 1F 76
 Tempo (0-255, interface only transmits 31-239)
Byte 9, 10:   xxxx  AAAA    ?AAA  Axxx
     byte code      tempo
    ----------      -------
     71  7C              31
     72  04               32
     72  0C              33
     72  14               34
              ...
     72  74               46
     72  7C              47
     73  04               48
            ...
     7E  7C            239
    10 - Local off (0=off, 1=on)
Byte 10:   ?xxx  xAxx


          off = 00
          on = 04

    10 - Keyboard mode (0=active, 1=inactive)

Byte 10:   ?xxx  xxAx
active = 04
selected = 06
    10 - Pedal polarity (0=normal, 1=inverted)
Byte 10:   ?xxx  xxxA
normal = 00
inverted = 01


  11 - Global sync (1-32,  offset of 1 -> 00=1 )

Byte 11:   ?AAA  AAxx
00 = 1
04 = 2
08 = 3
0C = 4
  ...
7C = 32
  11, 12 - Master Tune (0 - 127, -128 - -1, in that order, interface only transmits -100 - +100)
Byte 11, 12:   ?xxx  xxAA    ?AAA  AAAx
-100 = 0E 39
    ...
-3 = 0F 7B
-2 = 0F 7D
-1 = 0F 7F
0  = 0C 01
1 =  0C 03
2 =  0C 05
3 =  0C 07
4 =  0C 09
5 =  0C 0B
  ...
100 = 0D 49
 Program change, Receive (0=off, 1=on)
Byte 12:   ?xxx  xxxA
off  = 00
on = 01
Knob mode (0=immediate, 1=hooked)
Byte 13:   ????  ?xA?
40 = immediate
60 = hook
Program change, Send (0=off, 1=on)
Byte 13:   ????  ?Ax?
off  = 00
on = 40
 

 Bytes  14-22    ????  ????


 Slot A active (0=active, 1=inactive)

Byte 23:   ????  ?Axx

  active = 00
  inactive = 04
 

Slot A midi channel (1-16)
Byte 23, 24:   ????  ?xAA    ?AA?  ????

  1 =  00  03
  2 =  00  23
  3 =  00  43
  4 =  00  63
  5 =  01  03
   ...
  16 = 03  63
 

Slot B active (0=active, 1=inactive)
Byte 25:   ????  ???A

 active = 00
 inactive = 01
 

Slot B midi channel (1-16)
Byte 26:   ?AAA    A???

 1 =  00
 2 =  08
 3 =  10
    ...
16 = 78
 

Byte  27    ????  ????
 
 

Slot C active (0=active, 1=inactive)
Byte 28:   ??Ax  xxx?

 active = 00
 inactive = 20

Slot C midi channel (1-16)
Byte 28:   ??xA  AAA?

 1 =  00
 2 =  02
 3 =  04
 4 =  06
 5 =  08
 6 =  0A
   ...
16 = 1E
 

Byte  29    ????  ????


Slot D active (0=active, 1=inactive)

Byte 30:   ????  Axxx
active = 00
inactive = 08
Slot D midi channel (1-16)
Byte 30, 31:   ????  xAAA   ?A??  ????
1 =  00 06
2 =  00 46
3 =  01 06
  ....
16 = 07 46
 

 Byte 33 - Checksum
 Byte 34 - Sysex stop

Selecting slots (Elby)

Selecting individual slots results in two 9-byte sysex messages as follows:

Slot A:

F0  33  5C  06  41  07  08  55  F7
F0  33  5C  06  41  09  00  4F  F7
Slot B:
F0  33  5C  06  41  07  04  51  F7
F0  33  5C  06  41  09  01  50  F7
Slot C:
F0  33  5C  06  41  07  02  4F  F7
F0  33  5C  06  41  09  02  51  F7
Slot D:
F0  33  5C  06  41  07  01  4E  F7
F0  33  5C  06  41  09  03  52  F7
The first message of each pair if sent to the NM causes a slot change. The second message sets the active slot.
The encoding is as follows:
 
F0  33  5C  06  41  07  08  55  F7
  1   2     3    4    5    6    7    8    9


Coding:

  1 - Sysex start
  2 - Nord's manufacturer id
  3 -  ????
  4 - Nord's product id ?
  5 - op code (slot change)
  6 - selection code.  07 = change slot.  09 = set active
  7 - slot id.   If selection code = 07, low-order 4 bits used to designate slots in the order:  ABCD.  If selection code = 09, slot id is as follows:  00 =  A, 01 = B, 02 = C, 03 = D.
  8 - checksum.  Can be computed as 46 + slot id + selection code.
  9 - Sysex stop


The slot id can be used to designate multiple slots.  For example, slots C and D  would be slot id = 03.  slots ABC would be slot id =  0E.  The checksum is calculated appropriately.  For C and D, checksum = 50.  For ABC, checksum = 5B.