COMPLETE SYSEX COMMAND CODING
11/30/95

All sysex commands should be sent to the 8Port/SE's Control Port.


******************************************************************************
MESSAGE ROUTING
******************************************************************************


------------------------------------------------------------------
Set status of message routing from port ss to port dd.

F0 00 00 37 02 57 ss dd aa m1 m2 c1 c2 c3 c4 F7

This command specfies all message routing and filter settings between
source port ss and destination port dd. These settings are effective
after the command has been acknowledged.

ss and dd are source and destination ports, respectively, coded as follows:
        00h - computer
        01h - port 1
        02h - port 2
        03h - port 3
        04h - port 4
        05h - port 5
        06h - port 6
        07h - port 7
        08h - port 8
(note: ss and dd cannot both be 00 in a given command)

Channel adder, aa, is coded as follows:
        00h - no change
        01h - add  1 to source channel number to compute destination channel
        02h - add  2 to source channel number to compute destination channel
        03h - add  3 to source channel number to compute destination channel
        04h - add  4 to source channel number to compute destination channel
        05h - add  5 to source channel number to compute destination channel
        06h - add  6 to source channel number to compute destination channel
        07h - add  7 to source channel number to compute destination channel
        08h - add  8 to source channel number to compute destination channel
        09h - add  9 to source channel number to compute destination channel
        0Ah - add 10 to source channel number to compute destination channel
        0Bh - add 11 to source channel number to compute destination channel
        0Ch - add 12 to source channel number to compute destination channel
        0Dh - add 13 to source channel number to compute destination channel
        0Eh - add 14 to source channel number to compute destination channel
        0Fh - add 15 to source channel number to compute destination channel

m1 and m2 are bit-encoded message type fields as shown below. A 1 bit
enables routing of messages from port ss to port dd; a 0 bit disables
routing of the messages from ss to dd.
        m1 bit 7 - always 0
               6 - note on / off (8x/9x)
               5 - polyphonic key pressure (Ax)
               4 - control change (Bx)
               3 - program change (Cx)
               2 - channel pressure (Dx)
               1 - pitch bend (Ex)
               0 - sysex (F0)
        m2 bit 7 - always 0
               6 - MIDI time code (F1)
               5 - system common (spp, song select, tune request)
               4 - real time sync (F8,FA,FB,FC)
               3 - active sensing and reset (FE,FF)
               2 - reserved
               1 - reserved
               0 - reserved

c1, c2, c3, and c4 are bit-encoded channel number fields as shown below.
A 1 bit enables routing of messages from port; a 0 disables routing of
messages.
        c1 bit 7 - always 0
               6 - always 0
               5 - always 0
               4 - always 0
               3 - channel 16
               2 - channel 15
               1 - channel 14
               0 - channel 13
        c2 bit 7 - always 0
               6 - always 0
               5 - always 0
               4 - always 0
               3 - channel 12
               2 - channel 11
               1 - channel 10
               0 - channel  9
        c3 bit 7 - always 0
               6 - always 0
               5 - always 0
               4 - always 0
               3 - channel  8
               2 - channel  7
               1 - channel  6
               0 - channel  5
        c4 bit 7 - always 0
               6 - always 0
               5 - always 0
               4 - always 0
               3 - channel  4
               2 - channel  3
               1 - channel  2
               0 - channel  1

When processing of the command is completed, an acknowledgment message is
sent to the computer via the sync port, as follows:

F0 00 00 37 02 64 57 F7

The command parameters are saved so that storing the active program to
nonvolatile memory will retain them with the specified program.
------------------------------------------------------------------


------------------------------------------------------------------
Request status of message routing from port ss to port dd.

F0 00 00 37 02 58 ss dd F7

A response message of the following form is returned to the computer via
the sync port, indicating the status of message routing for the active
program:

F0 00 00 37 02 59 ss dd aa m1 m2 c1 c2 c3 c4 F7

All parameters are coded as for the command "Set status of message
routing from port ss to port dd."
------------------------------------------------------------------


******************************************************************************
SYNC MODES
******************************************************************************

These commands set the desired synchronization mode of the interface.
The sync mode simply dictates interface operation as described below. By
default, (upon power up or program selection), SMPTE sync mode is
active.


------------------------------------------------------------------
Set SMPTE sync mode.

F0 00 00 37 02 20 00 7E 01 F7

This command enables reception of incoming SMPTE and regeneration of
received time code to SMPTE OUT. SMPTE sync mode should always be used
except when striping tapes.
------------------------------------------------------------------


------------------------------------------------------------------
Set SMPTE stripe mode.

F0 00 00 37 02 20 00 7E 02 F7

This command is issued to prime the interface for striping a new SMPTE
sync track with the SMPTE OUT signal. After the command is issued,
incoming SMPTE time code will be ignored and a leader tone will be
produced. Time code is not actually output until the SMPTE format and
start time are programmed (see SMPTE GENERATOR commands below).
------------------------------------------------------------------


******************************************************************************
SMPTE GENERATOR
******************************************************************************

These commands affect the generation of SMPTE time code through SMPTE
OUT. These commands must only be issued in SMPTE stripe mode, i.e.,
after issuance of the command "Set SMPTE stripe mode."


------------------------------------------------------------------
Set SMPTE generator format and start time, and start generator (BCD).

F0 00 00 37 02 70 00 fm hr mn sc fr F7

where fm designates the SMPTE format, as follows:
        00h: 24 fps
        02h: 25 fps
        04h: 30 fps drop (actually 29.97 fps, but with "drop frame" format)
        06h: 30 fps non-drop
        16h: 29.97 non-drop

The time varibles hr, mn, sc, fr are assumed to be in BCD form, and must
represent a valid time for the specified format. This command is
normally used to begin striping a SMPTE tape after SMPTE stripe mode has
been set. After the command is issued, SMPTE time code of the specified
format and start time is output through the SMPTE OUT jack. Time code
will continue to be output until either of the commands "Set SMPTE sync
mode" or "Stop SMPTE generator and output leader tone" is issued.

As an example, if the interface is in SMPTE stripe mode, the following
command would cause 30-frame drop SMPTE to be generated, beginning at
19:23:47:00:

F0 00 00 37 02 70 00 04 19 23 47 00 F7
------------------------------------------------------------------


------------------------------------------------------------------
Set SMPTE generator format and start time, and start generator (binary).

F0 00 00 37 02 71 00 fm hr mn sc fr F7

where fm designates the SMPTE format, as follows:
        00h: 24 fps
        02h: 25 fps
        04h: 30 fps drop (actually 29.97 fps with "drop frame" format)
        06h: 30 fps non-drop
        16h: 29.97 non-drop

The time varibles hr, mn, sc, fr are assumed to be in hex binary form,
and must represent a valid time for the specified format. This command
is normally used to begin striping a SMPTE tape after SMPTE stripe mode
has been set. After the command is issued, SMPTE time code of the
specified format and starting time is output through the SMPTE OUT jack.
Time code will continue to be output until either of the commands Set
SMPTE sync mode or Stop SMPTE generator and output leader tone is
issued.

As an example, if the interface is in SMPTE stripe mode, the following
command would cause 30-frame drop SMPTE to be generated, beginning at
19:23:47:00:

F0 00 00 37 02 71 00 04 13 17 2F 00 F7

Note: This comamnds performs precisely the same function as the command
"Set SMPTE generator format and start time, and start generator (BCD),"
but this command codes the time parameters in hex binary.
------------------------------------------------------------------


------------------------------------------------------------------
Force SMPTE generator current time.

F0 00 00 37 02 72 00 00 hr mn sc fr F7

The time varibles are assumed to be in BCD form. This command would
normally only be used for specialized applications. It can be used to
interrupt the time code currently being output with a new sequential
time code stream beginning at the indicated time. The SMPTE format used
is the same as set by the command "Set SMPTE generator format and start
time, and start generator," which must have been previously issued.
------------------------------------------------------------------


------------------------------------------------------------------
Set frame rate override.

F0 00 00 37 02 75 00 aa bb cc dd F7

where aa, bb, cc, dd are 7-bit numbers which, when concatenated, form
the smpte bit time expressed in units of microseconds / 32768. This
command is provided for highly specialized applications which require
generation of a non-standard frame rate. To have effect, this command
must be issued subsequent to the command "Set SMPTE generator format and
start time, and start generator." The new frame rate will be applied
immediately upon receipt of the command, and must be within 10% of the
nominal frame rate of the underlying SMPTE format.
------------------------------------------------------------------


------------------------------------------------------------------
Stop SMPTE generator and output leader tone.

F0 00 00 37 02 76 00 F7

This command is normally used to cease output of time code just after a
SMPTE tape has been striped. A leader tone will then be produced. The
command is provided as a convenient means for producing a leader tone
between multiple sync tracks striped in succession.
------------------------------------------------------------------


------------------------------------------------------------------
Set SMPTE user bits.

F0 00 00 37 02 77 00 g1 g2 g3 g4 g5 g6 g7 g8 g9 F7

where g1 - g8 are user bits groups 1 - 8, respectively, with upper
nibble of 0 in each case. g9 bit 1 is flag 59, and g9 bit 0 is flag 43.
This command is used for specialized applications which require setting
of SMPTE user bits, as described in the SMPTE specification.
------------------------------------------------------------------


******************************************************************************
MISCELLANEOUS SYNC
******************************************************************************

These commands affect SMPTE input and / or output.


------------------------------------------------------------------
Request User Bits.

F0 00 00 37 02 01 00 00 26 F7

This command causes a user bits message to be sent to the PC. The
content of the message reflects user bit settings for the last good
received SMPTE frame. The returned response is of the form:

F0 7F 7F 01 02 g1 g2 g3 g4 g5 g6 g7 g8 g9 F7

where g1 - g8 are user bits groups 1 - 8, respectively, each with upper
nibble of 0. g9 bit 1 is flag 59, and g9 bit 0 is flag 43.
------------------------------------------------------------------


------------------------------------------------------------------
Set SMPTE parameters.

F0 00 00 37 02 7C 00 fm hr mn sc fr fw op d1 d2 F7

This command specifies all SMPTE parameters for the active program which
can subsequently be stored with a program. Note that certain SMPTE data
cannot be so stored, e.g., user bits and frame rate override.

fm, hr, mn, sc, fr are SMPTE striping parameters to be used (only) when
striping SMPTE from the 8Port/SE's front panel.

fm designates the SMPTE format, as follows:
        00h: 24 fps
        02h: 25 fps
        04h: 30 fps drop (actually 29.97 fps, but with "drop frame" format)
        06h: 30 fps non-drop
        16h: 29.97 non-drop

The time varibles hr, mn, sc, fr are assumed to be in BCD form, and must
represent a valid time for the specified format.

fw is the hex number of frames of freewheel provided, in the range
00-7E. If fw is set to 7F, freewheel will proceed indefintely after
received time code stops. Freewheel sets SMPTE reader tolerance for bad
incoming time code. After receiving the programmed number of consecutive
bad frames, the SMPTE reader ceases to produce MIDI Time Code messages
until good time code is again received.

op encodes various bits as follows:
        op bit 7 - always 0
        op bit 6 - reserved
        op bit 5 - reserved
        op bit 4 - reserved
        op bit 3 - reserved
        op bit 2 - reserved
        op bit 1 - SMPTE output level, 0 - low, 1 - high;
        op bit 0 - enable MTC messages to computer sync port, 0 - no, 1 - yes

d1 and d2 are bit-encoded destination ports for MIDI Time Code messages
from the SMPTE processor, as shown below. A 1 bit enables sending of
these messages to the indicated port; a 0 disables them.

        d1 bit 7 - always 0
               6 - always 0
               5 - always 0
               4 - always 0
               3 - MIDI OUT 8
               2 - MIDI OUT 7
               1 - MIDI OUT 6
               0 - MIDI OUT 5
        d2 bit 7 - always 0
               6 - always 0
               5 - always 0
               4 - always 0
               3 - MIDI OUT 4
               2 - MIDI OUT 3
               1 - MIDI OUT 2
               0 - MIDI OUT 1

This command should not be used to stripe SMPTE from a program. Use
instead the command "Set SMPTE generator format and start time, and
start generator."

The parameters fw, op, d1, and d2 are effective immediately.

When processing of the command is completed, an acknowledgment message is
sent to the computer via the sync port, as follows:

F0 00 00 37 02 64 7C F7

The command parameters are saved so that storing the active program to
nonvolatile memory will retain them with the specified program.
------------------------------------------------------------------

------------------------------------------------------------------
Request SMPTE parameters.

F0 00 00 37 02 7D F7

A response message of the following form is returned to the computer via
the sync port, giving the SMPTE parameters for the currently active
program:

F0 00 00 37 02 7E 00 fm hr mn sc fr fw op d1 d2 F7

The response message parameters are as described in the command "Set
SMPTE parameters."
------------------------------------------------------------------


******************************************************************************
PROGRAM COMMANDS
******************************************************************************


------------------------------------------------------------------
Select program pp.

F0 00 00 37 02 60 pp F7

This command retrieves program pp from the 8Port/SE's nonvolatile memory
and makes it the active program. pp is coded as follows:

        00h - user program 1
        01h - user program 2
        02h - user program 3
        03h - user program 4
        04h - user program 5
        05h - user program 6
        06h - user program 7
        07h - user program 8
        08h - factory program 1
        09h - factory program 2
        0Ah - factory program 3
        0Bh - factory program 4
        0Ch - factory program 5
        0Dh - factory program 6
        0Eh - factory program 7
        0Fh - factory program 8

Execution of this command may take a few seconds. When the command is
completed, a message of the following form will be sent to the PC via
the sync port:

F0 00 00 37 02 64 60 F7
------------------------------------------------------------------


------------------------------------------------------------------
Store active program as user program pp in nonvolatile memory

F0 00 00 37 02 62 pp F7

This command stores the active program in the 8Port/SE's nonvolatile
memory as program pp. If a factory program is currently active, no
action will be taken. pp is coded as follows:

        00h - user program 1
        01h - user program 2
        02h - user program 3
        03h - user program 4
        04h - user program 5
        05h - user program 6
        06h - user program 7
        07h - user program 8

Execution of this command may take several seconds. When the command is
completed, a message of the following form will be sent to the PC via
the sync port:

F0 00 00 37 02 64 62 F7
------------------------------------------------------------------


------------------------------------------------------------------
Set 8Port/SE program number

F0 00 00 37 02 65 pp F7

This command simply changes the number of the "current" 8Port/SE
program. It does not change the current program settings, nor does it
take any action with respect to nonvolatile memory. The command is
intended to be used only in special situations.

Program pp is the program number, as previously described.

Note: Factory programs 3-8 do not affect MIDI routing or filtering. Program
numbers for these are never retained by the 8Port/SE.

When the command is completed, a message of the following form will be
sent to the PC via the sync port:

When processing of the command is completed, an acknowledgment message is
sent to the computer via the sync port, as follows:

F0 00 00 37 02 64 65 F7
------------------------------------------------------------------


------------------------------------------------------------------
Request 8Port/SE program number

F0 00 00 37 02 66 F7

This command simply retrieves the number of the "current" 8Port/SE
program. It does not change the current program settings, nor does it
take any action with respect to nonvolatile memory. The command is
intended to be used only in special situations.

A response message of the following form is returned to the computer via
the sync port, giving the program number for the currently active
program:


F0 00 00 37 02 67 pp F7

where pp is the program number.
------------------------------------------------------------------


******************************************************************************
Footswitch/Trigger Commands
******************************************************************************


------------------------------------------------------------------
Set Footswitch/Trigger Action.

F0 00 00 37 02 50 aa hh 0m 0n 0o 0p 0q 0r 0s 0t 0u 0v 0w 0x F7

aa selects the footswitch/trigger action, as follows:
        00 - footswitch/trigger disabled
        01 - trigger
        02 - footswitch events
        03 - footswitch 8Port/SE program advance

hh is trigger holdoff time

mn forms the status byte for the footswitch down / trigger event
op forms the first data byte for the footswitch down / trigger event
qr forms the second data byte for the footswitch down / trigger event
st forms the status byte for the footswitch up event
uv forms the first data byte for the footswitch up event
wx forms the second data byte for the footswitch up event

mn,op,qr should all be 00h if there is no footswitch down/trigger event
st,uv,wx should all be 00h if there is no footswitch up event

When processing of the command is completed, an acknowledgment message is
sent to the computer via the sync port, as follows:

F0 00 00 37 02 64 50 F7

These settings apply to all 8Port/SE programs and are stored in
nonvolatile memory.
------------------------------------------------------------------


------------------------------------------------------------------
Retrieve Footswitch/Trigger Action.

F0 00 00 37 02 51 F7

A response message of the following form is returned to the computer via
the sync port, giving the Footswitch/Trigger action parameters.

F0 00 00 37 02 52 aa hh 0m 0n 0o 0p 0q 0r 0s 0t 0u 0v 0w 0x F7

The response message parameters are as described in the command "Set
Footswitch/Trigger Action."
------------------------------------------------------------------


------------------------------------------------------------------
Set Footswitch/Trigger Event Destination.

F0 00 00 37 02 53 op d1 d2 F7

op encodes various bits as follows:
        op bit 7 - always 0
        op bit 6 - reserved
        op bit 5 - reserved
        op bit 4 - reserved
        op bit 3 - reserved
        op bit 2 - reserved
        op bit 1 - reserved
        op bit 0 - enable event messages to computer sync port, 0 - no, 1 - yes

d1 and d2 are bit-encoded destination ports for footswitch/trigger
events, as shown below. A 1 bit enables sending of these messages to the
indicated port; a 0 disables them.

        d1 bit 7 - always 0
               6 - always 0
               5 - always 0
               4 - always 0
               3 - MIDI OUT 8
               2 - MIDI OUT 7
               1 - MIDI OUT 6
               0 - MIDI OUT 5
        d2 bit 7 - always 0
               6 - always 0
               5 - always 0
               4 - always 0
               3 - MIDI OUT 4
               2 - MIDI OUT 3
               1 - MIDI OUT 2
               0 - MIDI OUT 1

When processing of the command is completed, an acknowledgment message is
sent to the computer via the sync port, as follows:

F0 00 00 37 02 64 53 F7

The command parameters are saved so that storing the active program to
nonvolatile memory will retain them with the specified program.
------------------------------------------------------------------


------------------------------------------------------------------
Request Footswitch/Trigger Event Destination.

F0 00 00 37 02 54 F7

A response message of the following form is returned to the computer via
the sync port, giving the Footswitch/Trigger event destination parameters.

F0 00 00 37 02 55 op d1 d2 F7

The response message parameters are as described in the command "Set
Footswitch/Trigger Event Destination."
------------------------------------------------------------------


******************************************************************************
OTHER COMMANDS
******************************************************************************

These commands are made available primarily for diagnostic purposes.


------------------------------------------------------------------
Test internal RAM.

F0 00 00 37 02 14 00 F7

For good RAM, returned response via the sync port is of the form:

F0 00 00 37 02 1F 00 14 07 0f F7

For bad RAM, returned response via the sync port is of the form:

F0 00 00 37 02 1F 00 14 00 00 F7
------------------------------------------------------------------


------------------------------------------------------------------
Return ROM checksum.

F0 00 00 37 02 15 00 F7

Returned response via the sync port is of the form:

F0 00 00 37 02 1F 00 15 0x 0y F7

where xy is the checksum
------------------------------------------------------------------


------------------------------------------------------------------
Return ROM rev.

F0 00 00 37 02 16 00 F7

Returned response via the sync port is of the form:

F0 00 00 37 02 1F 00 16 0x 0y F7

where xy is the rom revision
------------------------------------------------------------------
