STUDIO 64X COMPLETE SYSEX COMMAND CODING October 1, 1996 All sysex commands should be sent to the Studio 64x's Control Port, presently designated port 7E (hex). All sysex responses from the interface and MTC messages are received via this same port number, which is also referred to as the "Sync Port" in the following. ****************************************************************************** MESSAGE ROUTING ****************************************************************************** ------------------------------------------------------------------ Set status of message routing from port ss to port dd. F0 00 00 37 04 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 (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 Control Port, as follows: F0 00 00 37 04 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 04 58 ss dd F7 A response message of the following form is returned to the computer via the Control Port, indicating the status of message routing for the active program: F0 00 00 37 04 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 04 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 04 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 04 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 04 70 00 04 19 23 47 00 F7 ------------------------------------------------------------------ ------------------------------------------------------------------ Set SMPTE generator format and start time, and start generator (binary). F0 00 00 37 04 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 04 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 04 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 04 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 04 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 04 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 04 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 04 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 Studio 64x'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 - reserved 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 - always 0 2 - always 0 1 - always 0 0 - always 0 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 Control Port, as follows: F0 00 00 37 04 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 04 7D F7 A response message of the following form is returned to the computer via the Control Port, giving the SMPTE parameters for the currently active program: F0 00 00 37 04 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 04 60 pp F7 This command retrieves program pp from the Studio 64x'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 - factory program 1 05h - factory program 2 06h - factory program 3 07h - factory program 4 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 Control Port: F0 00 00 37 04 64 60 F7 ------------------------------------------------------------------ ------------------------------------------------------------------ Store active program as user program pp in nonvolatile memory F0 00 00 37 04 62 pp F7 This command stores the active program in the Studio 64x'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 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 Control Port: F0 00 00 37 04 64 62 F7 ------------------------------------------------------------------ ------------------------------------------------------------------ Set Studio 64x program number F0 00 00 37 04 65 pp F7 This command simply changes the number of the "current" Studio 64x 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. When processing of the command is completed, an acknowledgment message is sent to the computer via the Control Port, as follows: F0 00 00 37 04 64 65 F7 ------------------------------------------------------------------ ------------------------------------------------------------------ Request Studio 64x program number F0 00 00 37 04 66 F7 This command simply retrieves the number of the "current" Studio 64x 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 Control Port, giving the program number for the currently active program: F0 00 00 37 04 67 pp F7 where pp is the program number. ------------------------------------------------------------------ ****************************************************************************** OTHER COMMANDS ****************************************************************************** These commands are made available primarily for diagnostic purposes. ------------------------------------------------------------------ Test internal RAM. F0 00 00 37 04 14 00 F7 For good RAM, returned response via the Control Port is of the form: F0 00 00 37 04 1F 00 14 07 0f F7 For bad RAM, returned response via the Control Port is of the form: F0 00 00 37 04 1F 00 14 00 00 F7 ------------------------------------------------------------------ ------------------------------------------------------------------ Return ROM checksum. F0 00 00 37 04 15 00 F7 Returned response via the Control Port is of the form: F0 00 00 37 04 1F 00 15 0x 0y F7 where xy is the checksum ------------------------------------------------------------------ ------------------------------------------------------------------ Return ROM rev. F0 00 00 37 04 16 00 F7 Returned response via the Control Port is of the form: F0 00 00 37 04 1F 00 16 0x 0y F7 where xy is the rom revision ------------------------------------------------------------------