LUSP Handshaking (12 hex)
This message provides a mechanism for synchronizing certain aspects of one system to another. The most significant use of this is during bulk dumps to a system where the "sending" unit (an external editor, another System, etc...) could conceivably send the data too fast for the receiving system to process it. In these cases the receiving system transmits a BUSY handshake message while it internally processes the last dump. When it is ready to receive more data it transmits a READY handshake message. Using this simple handshaking, data can be transmitted at the fastest possible rate with no chance of corrupting the data (buffer overflows, etc...).

Transmit + Receive
Byte # Value HEX  Description Notes 
1 F0 Sysex ID (Start) 
2 06 Lexicon ID 
3 0bbb bbbb Product ID 
4 0bbb bbbb Device ID  0-127
5 12 Message Class  Handshake Message Class
6-7 0n Handshake Command (1 byte) 
--- 0n Checksum  This is an optional "Checksum" field. The checksum is the low 7 bits of the sum of all preceeding bytes in the message following the "Message Class". 
F7 End of Sysex 

The following handshake commands have been defined:
0 No Operation (just a dummy)
1 Are you There
2 I'm Alive
3 I'm Busy. Please wait
4 I'm ready (used after a wait)
5 Error. Re-send data.
6 Enable Small (8 bit) address mode
7 Enable Large (16 bit) address mode (default)
8 Transmit LUSP control tree
9 Transmit linked paramters
10 Don't transmit linked parameters
11 Turn ON all MIDI output
12 Turn OFF all MIDI output
13 Turn ON MIDI Terminal
14 Turn OFF MIDI Terminal
15 Turn ON "Auto Display"
16 Turn OFF "Auto Display"
17 Turn ON "Flash ROM Write Mode" (unlock step 1)
18 Turn ON "Flash ROM Write Mode" (unlock step 2)
19 Turn ON "Flash ROM Write Mode" (unlock step 3)
20 Turn OFF "Flash ROM Write Mode"

The commands are defined as follows: (refer to the MPX G2 "midi.h" for 'C' defs)
0 - NOP

This does nothing but may be used to notify a controlling system that a new LUSP system has been connected.

1 - Are You There?
This is sent by a controlling system to a LUSP product to determine if it is (still) connected. An "IM_ALIVE" is expected back.

2 - I'm Alive
This is transmitted by a LUSP system to notify the outside world that it exists. It can be transmitted automatically or in response to "ARE_YOU_THERE".

3 - I'm Busy. Please Wait
This is sent by a system if it is not ready to receive any more data. Typically this is used during dumps where the system is storing the data.

4 - Ready
This is sent by a system if it it "ready" to resume a dump for example.

5 - Error
This is returned by a system if bad data was detected. Sending system should re-send the data.

6 - Enable Small (8 bit) address mode
7 - Enable Large (16 bit) address mode

These put the system into the small and large address modes. In the default "Large" mode, the message fields for number of control levels and the actual control address are 16 bit values (0 - 65535). In the "Small" mode, these fields are reduced to 8 bits (0 - 255) making many of the common messages significantly smaller.

8 -  Transmit the LUSP control tree
When a LUSP system receives this message it will transmit the ""Data Type" Type" message (including the normally optional control level information) for each node in the system. The LUSP system must watch for "BUSY" messages and wait for the subsequent "READY" message if one arrives.

9 - Transmit Linked Parameters
This is sent by the conrolling system to the LUSP product to place the LUSP system into a "Transmit Linked "Data Type"s" mode. When this mode is turned on, the LUSP system will automatically transmit ""Data Type" Data" messages for all all "linked" "Data Type"s. "Linked" "Data Type"s make individual changes but also force other "Data Type"s to change their values. When the system receives a ""Data Type" Data" message for a "Data Type" which is "linked" to others, ""Data Type" Data" messages for the "other" "Data Type"s are transmitted back to the controller so that it will have current values.

10 - Don't Transmit Linked Parameters
This shuts off the "Transmit Linked "Data Type"s" mode.

11 - Turn ON All MIDI Output
This instructs the connected LUSP system to enable the output of all MIDI data. Internal modes and settings are updated accordingly.

12 - Turn OFF All MIDI Output
This instructs the connected LUSP system to disable the output of all MIDI data. Internal modes and settings are updated accordingly.

13 - Turn ON the MIDI Terminal Mode
14 - Turn OFF the MIDI Terminal Mode

These turn on and off the "MIDI Terminal" mode (see MIDI Terminal Message (11 hex)).

15 - Turn ON the "Auto Display Mode"
When a LUSP system receives this message, a global mode is set which generates a display dump message for the product whenever the display (LEDs, LCD, etc..) change.

16 - Turn OFF the "Auto Display Mode"
This turns off the auto display mode in the LUSP system.

17 - Turn ON the "Flash ROM Write Mode 1" (unlock step 1)
18 - Turn ON the "Flash ROM Write Mode 2"  (unlock step 2)

19 - Turn ON the "Flash ROM Write Mode 3"  (unlock step 3)

These turn on the flash ROM write mode in the system. This shuts down normal operation of the system and prepares it for a Flash Update proceedure.

20 - Turn OFF the "Flash ROM Write Mode"
This turns off the flash ROM write mode then reboots the connected system.

21 - Run Flash Command
This runs the current flash command specified by the Command Field of the Flash ROM code header.

22 - Clear Checksum
This clears the running checksum used verify valid Flash ROM data.

Example
This message can also be used to determine if a system is connected by sending the HANDSHAKE_ARE_YOU_THERE message to the system as follows:

 
--header-- 
F0 06 09 00 12 01 F7 
This more specialized use of the handshake is one of the reasons the standard MIDI handshake (used for Sample dump, etc) is not used.