AudioBox COMMAND SET

Firmware Versions A450, V694, T275

updated 29 June 2009

Contents:


Introduction

The AudioBox Disk Playback Matrix Mixer is controlled by commands received over a MIDI, SCSI or ethernet link. This document specifies the command set of the AudioBox. Most commands, whether sent via MIDI, SCSI or ethernet, are formatted to either MIDI Show Control, or MIDI manufacturer's system exclusive message standards. Refer to the MIDI Show Control Recommended Practice RP-002, the MIDI Specification and the SCSI Specification ANSI X3T9.2 version 1 for specific information about these standards.

This document provides command specifications for all AudioBox models. There are currently three models of the AudioBox:

Where there are differences, this document refers to the specific AudioBox model. Otherwise, information in this document refers to all models.

Commands designated 'SCSI-only' are valid on models 1616HD and AB1616 only.

Commands designated 'Ethernet-only' are valid on the AB64 only.

All numerical values in this document are decimal unless followed by 'H', which designates values in hexadecimal.

General Command Formats
sysex: MIDI System Exclusive commands

A complete sysex command is formatted as follows:

   F0H 00H 00H 40H 02H destID srcID [cmd/data field] F7H

     '00H 00H 40H' is the manufacturer's sub ID
     '02H' is AudioBox device type
     destID is the individual, group, or universal destination device ID
     srcID is the individual source device ID
          (7FH if no individual ID assigned)

     The command byte is 7 bytes from the 1st byte (F0H: start of sysex)


MSC: MIDI Show Control commands

A complete MSC command is formatted as follows:

   F0H 7FH devID 02H [cmd format byte] [cmd/data field] F7H

     devID is an individual, group, or universal device ID
     The  [cmd format byte] is either:
        13H (EPROM playback) for all audio playback commands, or
        10H (Sound) for all other commands.

     The command byte is 5 bytes from the 1st byte (F0H: start of sysex)

Data field may contain MIDI Time Code (MTC), always 5 bytes, any valid format accepted.

All commands may be sent to the AudioBox via either MIDI or SCSI (except a small number of commands designated MIDI-only or SCSI-only). If a command sent to the MIDI IN port generates a response from the AudioBox, the response will be sent on the MIDI OUT port. Commands sent via SCSI use SEND COMMAND. If a command received via SCSI generates a response from the AudioBox, the response will be queued, and will be returned to the controller via a subsequent RECEIVE RESPONSE command. See the SCSI Implementation section below for more details.

The command formats are presented as follows: the command in capital letters and a short description of what the command does on the first line. On the second line is the command type (sysex, or MSC). On the third line are specifications of the [cmd/data field] bytes, in the order transmitted. Subsequent lines describe the symbols used in the [cmd/data field]. The symbol 'msb' means most significant byte, and 'lsb' means least significant byte. The last line gives the total length of the command in decimal bytes, including the beginning SYSEX byte, F0H, and the trailing EOX byte, F7H.

For example:

SET DEVICE ID         Set device IDs for the unit
  type: sysex 
  [cmd/data field]: [00H  ID  01H/00H]
  ID: device ID, 00H..6FH individual IDs, 70H..7EH Section IDs
  01H assigns, 00H deassigns
  message length: 11

MIDI TIME CODE

Many commands use MIDI TIME CODE (MTC) to represent durations in time.The full form of the MTC with subframes, always 5 bytes, is used in the AudioBox:

   hr mn sc fr ff

   hr = hours and frame type: 0tthhhhh
      tt = time type
      00 = 24 frame
      01 = 25 frame
      10 = 30 drop frame
      11 = 30 frame
      hhhhh = hours (0..23)
   mn = minutes and ramp type : 0cmmmmmm
      c = ramp type, 1 = exponential, 0 = linear
      mmmmmm = minutes (0..59)
   sc = seconds : 00ssssss
      ssssss = seconds(0..59)
   fr = frames : 000fffff
      fffff = frames (0..29)
   ff = subframes : 0bbbbbbb
      bbbbbbb = subframes (0..99)


Command Throughput / Buffering

The AudioBox can process most commands far faster than they can be transmitted via MIDI. Therefore most commands can be sent at the maximum rate via MIDI without concern about running out of buffering in the AudioBox. The main exception is the DEFRAGMENT DRIVE command, which can take many minutes to complete, as described in the command description. The SAVE SETTINGS command requires approximately 100 millseconds to complete, because it writes data to disk.

In contrast to MIDI, commands can be sent via SCSI and ethernet far faster than they can be processed by the AudioBox. SCSI transactions and incoming ethernet packets are handled at interrupt priority, preempting normal command processing. Whenever multiple commands are sent via SCSI or ethernet, attention must be given to the AudioBox's buffering limits.

All AudioBox messages are 128 bytes or less in length. There is a pool of 128-byte buffers available for incoming messages. The number of buffers available varies with the firmware release, but is at least 320 (1500 for the model AB1616 and AB64). If more than this number of commands are sent in a burst via SCSI or ethernet, message buffers will run out, and commands will be dropped. The number of buffers currently available can be determined through the use of a GET STATS command.

Channel Numbering

Note that all channel numbers used in the command set are zero-based while one-based numbering is used in most control programs and for the labelling of the connectors on the back panel of the unit. For example, the lowest channel number is 00H which refers to the channel labelled "1" on the back of the unit.

For the AudioBox 1616HD, the disk playback channels are numbered 08H through 0FH; these are internally connected directly to matrix input channels 08H through 0FH.

For the AudioBox AB1616, the disk playback channels are numbered 00H through 0FH; channels 00H through 07H can be connected to matrix input channels 00H through 07H (see SET INPUT CHANNEL MODE) and disk playback channels 08H through 0FH are always internally connected directly to matrix input channels 08H through 0FH.

For the AudioBox AB64, the disk playback channels are numbered 00H through 3FH; these are always internally connected directly to the source mix for input channels 00H through 3FH. See SET SOURCE MIX.


Section 1: Device Commands


SET DEVICE ID         Set device IDs for the unit
  type: sysex 
  [cmd/data field]: [00H  ID  01H/00H]
  ID: device ID, 00H..6FH individual IDs, 70H..7DH Group IDs
  01H assigns, 00H deassigns
  message length: 11

SET DEVICE ID assigns or deassigns one or more device IDs to the AudioBox. In a new AudioBox and following a "clear all user data" command (see CLEAR DATA), no device IDs are set. The AudioBox always responds to valid commands containing the universal device ID (7FH).

When set to an individual ID (00H..6FH), the AudioBox responds to commands containing its individual ID as well as the universal ID. The AudioBox may be set to only one individual ID. Setting an individual ID deassigns any previous ID.

IDs in the range 70H..7DH are group IDs (the group ID 7E is reserved). Once an individual ID has been assigned to the AudioBox, one or more group IDs may be assigned by sending one or more SET DEVICE ID commands. (Prior to setting an individual ID, attempts to set group IDs will be ignored. An individual ID must be set first so that command responses can be positively identified by their individual ID.) The AudioBox responds to commands containing any of its group IDs, as well as its individual ID and the universal ID. This command also allows device IDs to be deassigned.

This command updates only the device IDs in RAM. To save the new device IDs to disk so that they are restored every time the AudioBox is powered on, follow this command with a SAVE SETTINGS command. When a show is opened containing a setup cue, all device IDs are cleared.

SEND MIDI  Send MIDI string on MIDI output port
  type: sysex
[cmd/data field]:  [1CH msgstr]
msgstr: MIDI string to be sent, with bit 7 cleared in the first
        byte (the status byte), and EOX (end of sysex: F7H), if any,
        stripped off the end of the message. 
message length: 16..128

SEND MIDI transmits a MIDI string on the MIDI OUT port. Any valid music MIDI, system exclusive or MSC command is allowed. The message can be up to 120 bytes long. Full strings must be used; running status is not supported.

The string to be transmitted requires minor modifications before being embedded in the SEND MIDI message. Status bytes (any byte with bit 7 set) are not allowed within system exclusive messages. The first byte of the MIDI string to be sent (the status byte) must have bit 7 cleared (or equivalently 128 subtracted from it) before it is embedded in the SEND MIDI message. For example, if the string to be sent is a NOTE ON message to MIDI channel 0 (90H), the first embedded byte would be 10H (90H - 80H = 10H). When the SEND MIDI command is processed by the AudioBox, the first byte of the embedded string will have bit 7 set before the string is transmitted.

If the string to be transmitted is itself a system exclusive message, the EOX, end of sysex byte (F7H) must be stripped off before the string is embedded. The normal EOX at the end of the SEND MIDI command must be included. Another way of saying this is that there must be one EOX on the end of the SEND MIDI message, not two. When the SEND MIDI command is processed by the AudioBox, if the status byte of the embedded string, after having bit 7 set, is a start of sysex (F0H), then an EOX will be appended to the string prior to transmission.

For example, the following string is a MSC GO cue 7 command to MIDI ID #1:

   F0H 7FH 01H 02H 10H 01H 37H F7H

To transmit this string on the MIDI OUT port, the following SEND MIDI message would be sent to the AudioBox:

   F0H 00H 00H 40H 02H 01H 7FH 1CH   70H 7FH 01H 02H 10H 01H 37H    F7H
 
SET GPI  Set General Purpose Input parameters
  type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [06H  09H pp dd dd]
   pp: playback trigger mode
   bit   value
   0:    0: do not start playback
   0:    1: start playback
   1:    0: do not add cue number offset
   1:    1: add cue number offset
   2:    0: do not swap cue and playback triggers
   2:    1: swap cue and playback triggers
   3:    0: trigger type lockout 
   3:    1: trigger address lockout
dd dd: trigger lockout in milliseconds 
         (lsb first, 14 bit unsigned value, 7 bits per byte)
message length: 11

Example pp codes:
   03H: playback trigger input: normal, default
        playback started + cue triggered with cue number offset
   02H: playback trigger input: no playback
        playback not started, cue triggered with cue number offset
   01H: playback trigger input: playback without offset
        playback started, cue triggered without cue number offset
   00H: playback trigger input: 2nd cue trigger
        playback not started, cue triggered without cue number offset

SET GPI sets parameters for the General Purpose Input GPI contact-closure interface.

The GPI has two trigger inputs, the 'cue' trigger and the 'playback' trigger, and 8 address inputs (7 address inputs on the 1616HD AudioBox), which may be driven by any contact closure device. See the User's Manual for hardware details.

Note that the GPI interface is an option that is not present in all AudioBox units. On a non-GPI AudioBox, GPI parameters may be set and read back without generating an error, but the parameters not used.

After receiving a valid cue or playback GPI trigger, subsequent triggers of the same type, or type and address, are locked out until the trigger has been inactive for a length of time. This lockout prevents false retriggering from contact bounce. A typical switch or relay contact bounces for approximately 10 milliseconds when it closes. The default trigger lockout is 1 second. With the SET GPI command, the trigger lockout may be set to any value from 0 to 16,383 milliseconds. Note that there are separate lockout timers for each trigger, and both use the same trigger lockout value.There are two trigger lockout modes, selected with bit 3 of the 'pp' parameter in the command. With the bit clear, a simple lockout is enabled on both triggers. With the bit set, an address-specific lockout is enabled on both triggers. With the address-specific lockout enabled, during the lockout time subsequent triggers at the same input (playback or cue) at the same GPI address as the previous trigger at that input are locked out.

The cue trigger always operates the same way. The cue trigger performs a show control GO on the cue number equal to the binary-coded address lines at the time of the trigger. The default operation of the playback trigger is to perform a null playback GO, starting all enabled playback channels, and perform a show control GO on the cue number equal to the binary-coded address lines at the time of the trigger plus 256 (+128 on the 1616HD AudioBox). Using the SET GPI command, the operation of the playback trigger can be programmed. For the playback trigger, the null playback GO and the cue number offset can be independently enabled or disabled by setting the appropriate playback trigger mode bits. It is also possible to reverse the cue and playback triggers by setting bit 2 of the 'pp' parameter in the command. This causes the cue trigger (as identified in the GPI connector diagrams) to behave as the playback trigger and vice versa.

The current values for trigger lockout time and playback trigger mode may be retrieved from the AudioBox using a GET DISK STATE or GET DISK STATE EN command.

This command updates only the GPI parameter settings in RAM. To save the new GPI parameter settings to disk so that they are restored every time the AudioBox is powered on, follow this command with a SAVE SETTINGS command. When a show is opened containing a setup cue, all GPI parameter settings are reset to their default values.

SET GPO  Set General Purpose Output states
  type: MSC  AB64-only
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [06H  00H 1FH oo xx]
  oo: 00H: output 1, 01H: output 2
  xx: O0H: turn output off, 01H: turn output on
message length: 11

SET GPO turns on or off one of the two opto-isolated general purpose outputs on the AB64 GPIO connector. The state of the GPO outputs can be retrieved using a GET DISK STATE EN command. See the User's Manual for hardware details.

 
PUSH FRONT PANEL BUTTON      Push front panel button remotely or set LCD page (AB64 only)
  type: MSC 
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [06H 00H 1EH ss pp]
ss: front panel button (pp must be 0)
   0: push left button
   1: push middle button
   2: push right button
pp: page number (if non-zero, ss is ignored)
   1: AudioBox Main Page
   2: Control Signals
   3: Unit Information
   4: Set DHCP or Fixed IP
   5: Unit Setup
message length: 11

PUSH FRONT PANEL BUTTON causes the same action as physically pushing one of the buttons on the AB64 front panel.

CLEAR DATA      Clear user settings
  type: sysex  
  [cmd/data field]:  [0CH kk kk kk]
  kk kk kk "key" bytes: the following key byte sequences are defined:
    51H 78H 33H: clear all submaster and controller assigns
    65H 5AH 04H: clear files on disk drive (empties all directories)
    75H 4AH 08H: clear all user data, i.e. reinitialize AudioBox
             to factory settings (see below)
    76H 49H 09H: clear all user data except default show and IP settings
      (IP settings: AB64 only), (see below)
    11H 63H 29H: zero all device statistics
    43H 1BH 68H: zero all input, output and crosspoint delays (AB64 only)
  message length: 12

CLEAR DATA erases the specified data.The 'clear all user data' command sets only the current data in RAM. To make the new data permanent, follow this command with a SAVE SETTINGS command.

The 'clear all user data except defult show and IP settings' command (key 76H 49H 09H) reinitializes the following data areas, setting them to the factory defaults (shown in parentheses) (this also occurs when a show file containing a setup cue is opened):

The 'clear all user data command (key 75H 4AH 08H) reinitializes all of the above data areas and in addition sets the default show to 1, the fixed IP to the default IP and enables DHCP.

The 'zero all device statistics' command (key 11H 63H 29H) sets all message counts to zero and resets the queue low water marks.

SAVE SETTINGS      Save current settings to disk
  type: sysex  
  [cmd/data field]:  [3EH 59H 00H]
message length: 11

SAVE SETTINGS saves the currently set data (listed below) in RAM to disk. The saved data is read from disk when the AudioBox is powered on. The saved data can also be read from disk by the LOAD SETTINGS command. When a show file is opened, if a setup cue is present, all of the device settings except default show will be set to their default values, then the setup cue is run. The data saved by this command is the following:

LOAD SETTINGS      Load saved settings from disk
  type: sysex  
  [cmd/data field]:  [3FH 27H 00H]
message length: 11

LOAD SETTINGS loads the saved data from disk into RAM. The data loaded by this command is the same set listed in the SAVE SETTINGS command. Settings are loaded when the AudioBox is powered on, so this command is not needed in typical operation, but can be used to restore previously saved data.

SET COBRANET    Set up Cobranet
type: sysex  
  [cmd/data field]:  [53H 16[aa aa aa]]
  The data field consists of 16 bundle assignments. The order of the 
  assignments is listed below. Each assignment [aa aa aa] is encoded into 
  3 bytes, lsb first, 16 bit unsigned value, 7 bits per byte.
message length: 57
 
  Order of assignments in data field:
  Module 1 receiver 0
  Module 1 receiver 1
  Module 1 receiver 2
  Module 1 receiver 3
  Module 1 transmitter 0
  Module 1 transmitter 1
  Module 1 transmitter 2
  Module 1 transmitter 3
  Module 2 receiver 0
  Module 2 receiver 1
  Module 2 receiver 2
  Module 2 receiver 3
  Module 2 transmitter 0
  Module 2 transmitter 1
  Module 2 transmitter 2
  Module 2 transmitter 3

SET COBRANET sets configuration data in the CobraNet modules installed in the AB64. Data for CobraNet modules that are not installed is ignored.

Receive and transmit bundle assignments determine the routing of audio channels on the CobraNet. On the AB64, a bundle carries eight audio channels. Each AB64 CobraNet module has four receivers and four transmitters. The matrix channels are mapped to the receivers and transmitters linearly:

matrix   CobraNet  receiver /
channels  module   transmitter
1 to 8      1         0
9 to 16     1         1
17 to 24    1         2
25 to 32    1         3
33 to 40    2         0
41 to 48    2         1
49 to 56    2         2
57 to 64    2         3

Bundle numbers connect transmitters to receivers: the eight audio channels transmitted by a transmitter set to bundle n are received by a receiver set to bundle n. Valid bundle numbers are 1..255 for multicast bundles (more than one receiver) and 256..65279 for unicast bundles (one receiver). A bundle number of zero indicates an unused receiver or transmitter. When powered on, all receive and transmit bundle numbers are set to zero (inactive). Bundle assignments can also be made over the CobraNet using CobraNet configuration software, rather than by the AudioBox using this command.

There is an equivalent ethernet command, SET COBRANET EN.

SELECT DRIVE   Select disk drive (AB64 only)
  type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [06H 00H 22H 00 01H/00H]
  00H: select primary drive, 01H: select secondary drive
message length: 11

SELECT DRIVE selects one of the two disk drives internal to the AB64, making it the active drive.

The primary drive is the drive connected at the end of the disk drive data cable, a ribbon cable that runs from the main CPU board to the disk drives. The secondary drive is connected midway along the disk drive data cable. Normally, the AB64 reads from the primary drive. As long as the contents of both drives are identical, all files written to the primary drive are also written to the secondary drive, and all files erased from the primary drive are also erased from the secondary drive, keeping the secondary drive up-to-date at all times as a hot backup drive. (Audio recordings, however, are an exception; it is not possible to record simultaneously to both drives.)

When the AB64 boots up, if the primary drive is not functioning, the secondary drive is automatically selected.

This command can be used to switch between the disk drives. If the contents of both drives are identical, switching between drives does not affect ongoing playback or show controller activity. If the primary disk fails, switching to an identical secondary drive will restore proper functioning. This command can also be used to verify that the secondary drive is up-to-date.

There are a number of ways that the drives in an AB64 could become different. One is when a new drive is installed into an AB64 in which there is a drive already containing files. In this case, the contents of the existing drive should be copied to the new drive (see COPY DRIVE). Another is when audio recordings are made; recordings are always written only to the active drive. If the recorded file is uploaded to the host computer, then erased from the active drive before any other file transfers or erasures are done, the drives are again identical. The recording on the host computer can then be transferred to the AB64, if desired. This splits the audio into individual channels and writes them to both drives.

COPY DRIVE   Copy all data from one drive to the other (AB64 only)
  type: sysex  
  [cmd/data field]:  [56H 2DH 15H 64H 5EH 01H/00H]
  00H: copy primary drive to secondary drive, 01H: copy secondary drive to primary drive
message length: 14

COPY DRIVE copies all data from one drive to the other. During a drive copy operation all file transfer and erase commands are locked out. During drive copy the copyActive byte in the disk state structure is non-zero (see GET DISK STATE EN). Whenever copyActive is non-zero, the copyProg byte in the disk state structure indicates the progress of the copy operation, and can be used to update a progress bar (255 indicates completion). When the copy operation completes, the contents of the drives are identical, and the firmware will maintain this state by writing all transferred files to both drives and by erasing files from both drives. See SELECT DRIVE for more information.


Section 2: Gain Commands

AudioBox GAIN CONTROL

The AudioBox supports a variety of gain control mechanisms, providing the flexibility required by sound designers. Two forms of automated gain ramps, a complete submastering capability, muting and soloing, and downloadable gain curve tables are provided.

The sixteen inputs and sixteen outputs form a 256 crosspoint matrix. Input and output control points are also provided, for a total of 288 independently controlled and individually ramped gain points.

Two forms of gain ramps, exponential and table-driven, are selectable with each gain change command, using the 'colour' bit in the MIDI time code. The duration of both types of ramps is adjustable over a wide range, from milliseconds up to approximately an hour. Ramps always begin at the current gain level and end at the level specified in the gain change command.

Exponential ramps provide classic fade up and fade down curves. These are computed curves, not based on table lookup (i.e. the down curve is not a time-mirrored version of the up curve). Exponential ramps are time-scaled so that when fading up the curve reaches a point within 1 dB of its final value in the time duration specified in the gain change command. When fading down, the time duration in the command specifies the time required to fade to inaudibility.

Table-driven ramps allow the generation of arbitrary gain curves. Default curves are loaded on power-up, but customs curves can be downloaded. Up curves and down curves are always time-mirrored images of each other using this method. The entire curve in the table is generated in exactly the time duration specified in the gain change command. There are two tables, one for input and output control points and another for crosspoints. Typically, a curve suitable for crossfades is loaded into the crosspoint table, and a curve suitable for fade up and fade down ramps is loaded into the input / output table. The default curves are set up in this way. The default crosspoint table contains an equal-power sine crossfade curve, and the default input / output table contains a concave transform curve (the MIDI DLS standard attenuation curve).

Gain changes are always ramped at the DSP level on a per sample basis, ensuring that gain changes are always artifact-free. These DSP-based gain ramps are transparent to the user.

Thirty two submasters are available for live input and output level control. Each submaster can be independently assigned to one or more control points (up to 32: all input and output points), and each control point can have any number of submasters (up to 32) assigned to it, providing full flexibility. A master level control, for example, is easily configured by assigning all output control points to a submaster. Submasters always change the levels of all assigned control points in exact dB increments, maintaining the audio balance between signals. The submaster control sensitivity, or gain, can be set to adjust the tradeoff between control range and fineness of control. Submaster zero point can also be set, providing control over how much of the control range is gain boost and how much is gain cut.

MIDI controllers can, in turn, be assigned on a one-to-one basis to submasters. MIDI faders can be merged with other MIDI control sources to provide a manual fine-tuning and override capability.

NOTE: When the AudioBox is powered on, all input, output and crosspoint levels are initialized to zero (fully off), unless the test mode switch is on. When an input level, crosspoint level, and output level are all set to the maximum level (7FH), a unity gain path exists from that input to that output, assuming the input and output gains are not being affected by any assigned submasters. When the AudioBox is powered on, all submasters are set to the submaster zero value, thus submasters do not affect input or output gains until a non-zero submaster gain is explicitly set by an incoming command.


SET INPUT LEVEL      Set input level with fade time
  type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [06H  00H  00H  ii  aa  MTC]
  ii: input channel number, 00H..0FH for inputs 1 to 16
  aa: amplitude, 00H..7FH
  MTC: fade duration
     'colour' bit (minutes byte, bit 6) sets ramp type:
        0: table-driven ramp, 1: exponential ramp
  message length: 16

SET INPUT LEVEL sets the level for a specified input channel with a specified fade time. The input level will change from its current value to the specified value in the time specified by the MIDI timecode (MTC) value.

 

SET INPUT LEVEL w/ NOTIFY      Set input level, notify when complete
  type: MSC
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [06H  10H  00H  ii  aa  MTC]
  ii: input channel number, 00H..0FH for inputs 1 to 16
  aa: amplitude, 00H..7FH
  MTC: fade duration
     'colour' bit (minutes byte, bit 6) sets ramp type:
        0: table-driven ramp, 1: exponential ramp
  message length: 16

SET INPUT LEVEL w/ NOTIFY sets the level for a specified input channel with a specified fade time. The input level will change from its current value to the specified value in the time specified by the MIDI timecode (MTC) value. When the fade has completed a RESPONSE COMMAND COMPLETE message is sent to the srcID of the incoming request.

 

RESPONSE COMMAND COMPLETE    Command completion notification
                                 -sent by AudioBox
  type: sysex  
  [cmd/data field]:  [2AH [original cmd][original data]]
  [original cmd]: the [cmd] byte of the command now completed
  [original data]: the [data] bytes of the command now completed
  message length: 19

The command that has now completed is echoed back in the data field of the RESPONSE COMMAND COMPLETE message. The srcID field of the sysex message will contain the individual, group or universal device ID to which the original command was sent. The destID field of the sysex message will contain the universal device ID, 7FH.


SET OUTPUT LEVEL     Set output level with fade time
  type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [06H  00H  03H  oo  aa  MTC]
  oo: output channel number, 00H..0FH for outputs 1 to 16
  aa: amplitude, 00H..7FH
  MTC: fade duration
     'colour' bit (minutes byte, bit 6) sets ramp type:
        0: table-driven ramp, 1: exponential ramp
  message length: 16

SET OUTPUT LEVEL sets the level for a specified output channel with a specified fade time. The output level will change from its current value to the specified value in the time specified by the MIDI timecode (MTC) value.


SET OUTPUT LEVEL w/ NOTIFY   Set output level 
                                 with fade time and notify
  type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [06H  10H  03H  oo  aa  MTC]
  oo: output channel number, 00H..0FH for outputs 1 to 16
  aa: amplitude, 00H..7FH
  MTC: fade duration
     'colour' bit (minutes byte, bit 6) sets ramp type:
        0: table-driven ramp, 1: exponential ramp
  message length: 16

SET OUTPUT LEVEL w/ NOTIFY sets the level for a specified output channel with a specified fade time. The output level will change from its current value to the specified value in the time specified by the MIDI timecode (MTC) value. When the fade has completed a RESPONSE COMMAND COMPLETE message is sent to the srcID of the incoming request.


SET CROSSPOINT LEVEL  Set crosspoint level with fade time
  type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [06H  01H  ii  oo  aa  MTC]
  ii: input channel number, 00H..0FH for inputs 1 to 16
  oo: output channel number, 00H..0FH for outputs 1 to 16
  aa: amplitude, 00H..7FH
  MTC: fade duration
     'colour' bit (minutes byte, bit 6) sets ramp type:
        0: table-driven ramp, 1: exponential ramp
  message length: 16

SET CROSSPOINT LEVEL sets the level for a specified matrix crosspoint with a specified fade time. The crosspoint level will change from its current value to the specified value in the time specified by the MIDI timecode (MTC) value.


SET CROSSPOINT LEVEL w/ NOTIFY   Set crosspoint level 
                                     with fade time and notify
  type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [06H  11H  ii  oo  aa  MTC]
  ii: input channel number, 00H..0FH for inputs 1 to 16
  oo: output channel number, 00H..0FH for outputs 1 to 16
  aa: amplitude, 00H..7FH
  MTC: fade duration
     'colour' bit (minutes byte, bit 6) sets ramp type:
        0: table-driven ramp, 1: exponential ramp
  message length: 16

SET CROSSPOINT LEVEL w/ NOTIFY sets the level for a specified matrix crosspoint with a specified fade time. The crosspoint level will change from its current value to the specified value in the time specified by the MIDI timecode (MTC) value. When the fade has completed a RESPONSE COMMAND COMPLETE message is sent to the srcID of the incoming request.


SET CROSSPOINT ROW  Set crosspoint levels for one matrix row with fade time
  type: sysex    1616HD / AB1616 only
  [cmd/data field]:  [1DH ii (16)aa  MTC]
  ii: input channel number, 00H..0FH for inputs 1 to 16
  (16)aa: amplitude values, 00H..7FH, in ascending output channel order
  MTC: fade duration
     'colour' bit (minutes byte, bit 6) sets ramp type:
        0: table-driven ramp, 1: exponential ramp
  message length: 31

SET CROSSPOINT ROW sets the level for a matrix crosspoint row with a specified fade time. A matrix crosspoint row is a set of crosspoints all of which have the same input channel number. The crosspoint levels will change from their current values to the specified values in the time specified by the MIDI timecode (MTC) value.


SET CROSSPOINT ROW w/ NOTIFY   Set crosspoint levels for one matrix row with fade time and notify
  type: sysex    1616HD / AB1616 only
  [cmd/data field]:  [1EH ii (16)aa  MTC]
  ii: input channel number, 00H..0FH for inputs 1 to 16
  (16)aa: amplitude values, 00H..7FH, in ascending output channel order
  MTC: fade duration
     'colour' bit (minutes byte, bit 6) sets ramp type:
        0: table-driven ramp, 1: exponential ramp
  message length: 31

SET CROSSPOINT ROW w/ NOTIFY sets the level for a matrix crosspoint row with a specified fade time. A matrix crosspoint row is a set of crosspoints all of which have the same input channel number. The crosspoint levels will change from their current values to the specified values in the time specified by the MIDI timecode (MTC) value. When the fade has completed a RESPONSE COMMAND COMPLETE message is sent to the srcID of the incoming request.

 
SET CROSSPOINT PHASE  Set crosspoint phase inversion
  type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [06H  08H  ii  oo  01H/00H]
  ii: input channel number, 00H..0FH for inputs 1 to 16
  oo: output channel number, 00H..0FH for outputs 1 to 16
  01H enables 180 degree phase inversion, 00H disables phase inversion
message length: 11

SET CROSSPOINT PHASE enables or disables a 180 degree phase inversion at a crosspoint. When the AudioBox is powered on, all crosspoints are set to phase inversion disabled.

SET SOURCE MIX      Set source mix levels for input channel 
                              (Model AB64 only)
  type: sysex
  [cmd/data field]:  [1AH ii aa pp dd]
  ii: input channel number, 00H..3FH for inputs 1 to 64
  aa: analog signal amplitude, 00H..7FH
  pp: playback signal amplitude, 00H..7FH
  dd: digital signal amplitude, 00H..7FH
 message length: 13

SET SOURCE MIX sets the amplitude levels for the three potential signal sources for an AB64 input channel. The amplitude values are MIDI level numbers (0..127) as used, for example, by SET INPUT LEVEL, using the current input / output table (see AudioBox Gain Control). There are no gain ramps associated with the source level controls. (CobraNet is the only form of digital input currently available.)

The current source mix levels are returned by the GET IO LEVELS EN command.

SET PAN    Set pan value for input with fade time
  type: MSC    1616HD / AB1616 only
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [06H  00H  1AH  ii  pp MTC]
  ii: input channel number, 00H..0FH for inputs 1 to 16
  pp: pan, 00H..7FH, 00H:left, 40H:centre, 7FH:right
  message length: 16

SET PAN sets the left/right pan value for an input channel. For panning, even numbered channels (0, 2, 4...) are considered left channels and odd numbered channels (1, 3, 5...) are considered right channels. Setting the pan value for an input sets the gain value for all crosspoints on that input that are enabled for panning (see ENABLE PAN). The crosspoint level will change from its current value to the specified value in the time specified by the MIDI timecode (MTC) value. Setting a pan value to 00H (left) will set all pan-enabled even numbered channels to a gain level of 7FH (full on), and all pan-enabled odd numbered channels to a gain level of 00H (full off). Setting a pan value to 40H (centre) will set all pan-enabled channels to a gain level of 40H (equal power to left and right). Setting a pan value to 7FH (right) will set all pan-enabled even numbered channels to a gain level of 00H (full off), and all pan-enabled odd numbered channels to a gain level of 7FH (full on). When powered on, all crosspoints in the AudioBox are disabled for panning, and all pan values are set to centre (40H).

ENABLE PAN    Enable/disable panning for a crosspoint
  type: MSC    1616HD / AB1616 only
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [06H  15H  ii  oo  01H/00H MTC]
  ii: input channel number, 00H..0FH for inputs 1 to 16
  oo: output channel number, 00H..0FH for outputs 1 to 16
  01H enables panning, 00H disables panning
message length: 16

ENABLE PAN enables or disables panning for a crosspoint. Only crosspoints that are enabled for panning are affected by the SET PAN command. When powered on, all crosspoints in the AudioBox are disabled for panning, and all pan values are set to centre (40H). For panning, even numbered channels (0, 2, 4...) are considered left channels and odd numbered channels (1, 3, 5...) are considered right channels. Setting the pan value for an input sets the gain value for all crosspoints on that input that are enabled for panning. When a crosspoint is enabled for panning, the gain value of the crosspoint goes to the pan value (see SET PAN) in the time specified by the MIDI timecode (MTC) value. When a pan-enabled crosspoint is disabled from panning, the gain value of the crosspoint goes to 00H (full off) in the time specified by the MIDI timecode (MTC) value.

DISABLE PANNING    Disable panning for all crosspoints
  type: MSC    1616HD / AB1616 only
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [06H  00H  1BH  00H 00H]
  message length: 11

DISABLE PANNING disables panning for all crosspoints in the matrix and sets all pan values to centre (40H). See SET PAN and ENABLE PAN for an explanation of crosspoint panning. The gain value of all pan-enabled crosspoints is set to 00H (full off) immediately. The gain value of all pan-disabled crosspoints is unaffected.

SET CROSSPOINT ROW EXCL PAN Set crosspoint levels for one matrix row
                            with fade time, excluding pan-enabled crosspoints
  type: sysex    1616HD / AB1616 only
  [cmd/data field]:  [3DH ii (16)aa  MTC]
  ii: input channel number, 00H..0FH for inputs 1 to 16
  (16)aa: amplitude values, 00H..7FH, in ascending output channel order
  MTC: fade duration
     'colour' bit (minutes byte, bit 6) sets ramp type:
        0: table-driven ramp, 1: exponential ramp
  message length: 31

SET CROSSPOINT ROW EXCL PAN sets the levels for all crosspoints that are disabled for panning for a matrix crosspoint row with a specified fade time. This command is identical to SET CROSSPOINT ROW, except that crosspoints that are enabled for panning (see ENABLE PAN) are excluded from modification by this command. A matrix crosspoint row is a set of crosspoints all of which have the same input channel number. The crosspoint levels will change from their current values to the specified values in the time specified by the MIDI timecode (MTC) value.

SET MATRIX    Set entire gain matrix to known state
  type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [06H  00H  16H  mm  00H]
  mm: set matrix flags:
    bit 0: 0: input, output & crosspoints off, 1: on
    bit 1: 0: crosspoints on full, 1: -10 dB
    bit 2: 0: diagonal crosspoints, 1:all crosspoints
    all other bits: 0
    typical codes:
      00H: all input, output and crosspoints levels full off
      01H: all input, output, and diagonal crosspoint levels full on
      03H: all input, output, and diagonal crosspoint levels on at -10 dB
      05H: all input, output, and crosspoint levels full on
      07H: all input, output, and crosspoint levels on at -10 dB
  message length: 11

SET MATRIX is used to set the gain matrix to a known state. If 00H is sent as the set matrix code, all gain points (input, output, and crosspoint) are set to zero (audio off). If 01H is sent as the set matrix code, all input and output gain points are set to 7FH (full on), and all diagonal crosspoints are also set full on. Diagonal crosspoints are those that have the same input channel number and output channel number (crosspoint 0:0, 1:1, etc.) Set matrix code 05H turns all gain points on full. Set matrix code 03H is the same as 01H, and 07H is the same as 05H, except that the crosspoint levels are set to -10 dB. (Codes 02H, 04H, and 06H do the same thing as 00H. Codes above 07H are invalid.)


DOWNLOAD GAIN TABLE   Download a new gain table
  type: sysex  
  [cmd/data field]:  [0BH tc (32)xx xx xx]
  tc: table code as follows:
     00H: 1st 32 entries of Input/Output table
     01H: 2nd 32 entries of Input/Output table
     02H: 3rd 32 entries of Input/Output table
     03H: 4th 32 entries of Input/Output table
     04H: 1st 32 entries of Crosspoint table
     05H: 2nd 32 entries of Crosspoint table
     06H: 3rd 32 entries of Crosspoint table
     07H: 4th 32 entries of Crosspoint table
  xx xx xx: table value (unsigned 16 bit value, sent low 7 bits
    first, next 7 bits in 2nd byte, last 2 bits in 3rd byte,
    upper bits of 3rd byte zero)
  message length: 106

DOWNLOAD GAIN TABLE loads a new gain table, making it the current table. A gain table translates an amplitude value in the range 00H..7FH to a signal multiplier in the range 0.. 32767 (0 = full off and 32767 = full on). There is a gain table for input / output points, and another gain table for crosspoints. As soon as a gain table is downloaded, it becomes the current table (ready for use by set level commands). The gain table is downloaded into RAM, and will remain in effect until another table is downloaded or the unit is shut off. To permanently install a downloaded table, follow this command with a INSTALL GAIN TABLE command.

In designing a table, it may be more convenient to first generate an amplitude to dB translation table, where the 00H..7FH amplitude range is translated to dB numbers in the range -96..0, then convert each value to an unsigned 16 bit signal multiplier, by use of the following equation:

   multiplier = 32767 * 10^(dB/20) ('^' is 'raised to the power of')
 

Following a "clear all user data" command (see CLEAR DATA) and when a show is opened containing a setup cue, the current gain tables are set to the default input/output and crosspoint gain tables.


INSTALL GAIN TABLE   Install a gain table to permanent memory.
  type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [06H  00H  13H  tt  00]
  tt: table code as follows:
     00: current Input/Output table
     01: current Crosspoint table
     02: install built-in default Input/Output table
     03: install built-in default Crosspoint table
     04: install built-in equal-dB Input/Output table (0.756 dB per step)
     05: install built-in pre-DB5.5 version of default Input/Output table
  message length: 11

INSTALL GAIN TABLE writes a current gain table to disk, making it the installed table. There is a gain table for input / output points, and another gain table for crosspoints. When the AudioBox is powered on, the installed gain tables are loaded from disk into the current gain tables in RAM. A gain table download rewrites the current gain table in RAM. INSTALL GAIN TABLE can then be used to make a downloaded gain table the installed table.

This command also enables the installation of built-in gain tables. These are tables that are stored in the AudioBox firmware. When installed by this command, a built-in table becomes the current table (ready for use by set level commands) as well as the installed table (loaded from disk when the AudioBox is powered on).

In a new AudioBox, the default input/output and crosspoint gain tables are installed.

Built-in Gain Tables (gain specified in dB)

MIDI Default      Default      Equal-dB
#    Input/Output Crosspoint   Input/Output
 
0     off          off           off
1    -84.152149   -38.153898   -95.244094
2    -72.110949   -32.133963   -94.488189
3    -65.067299   -28.613245   -93.732283
4    -60.069749   -26.116021   -92.976378
5    -56.193349   -24.179814   -92.220472
6    -53.026099   -22.598626   -91.464567
7    -50.348227   -21.262570   -90.708661
8    -48.028549   -20.106055   -89.952756
9    -45.982448   -19.086772   -89.196850
10   -44.152149   -18.175834   -88.440945
11   -42.496441   -17.352636   -87.685039
12   -40.984899   -16.601966   -86.929134
13   -39.594415   -15.912269   -86.173228
14   -38.307027   -15.274566   -85.417323
15   -37.108498   -14.681738   -84.661417
16   -35.987350   -14.128045   -83.905512
17   -34.934192   -13.608795   -83.149606
18   -33.941249   -13.120099   -82.393701
19   -33.002005   -12.658700   -81.637795
20   -32.110949   -12.221842   -80.881890
21   -31.263377   -11.807175   -80.125984
22   -30.455242   -11.412676   -79.370079
23   -29.683035   -11.036590   -78.614173
24   -28.943699   -10.677390   -77.858268
25   -28.234548   -10.333733   -77.102362
26   -27.553215   -10.004436   -76.346457
27   -26.897598   -9.6884504   -75.590551
28   -26.265828   -9.3848404   -74.834646
29   -25.656229   -9.0927701   -74.078740
30   -25.067299   -8.8114886   -73.322835
31   -24.497681   -8.5403189   -72.566929
32   -23.946150   -8.2786485   -71.811024
33   -23.411591   -8.0259217   -71.055118
34   -22.892992   -7.7816326   -70.299213
35   -22.389427   -7.5453196   -69.543307
36   -21.900049   -7.3165601   -68.787402
37   -21.424080   -7.0949663   -68.031496
38   -20.960805   -6.8801816   -67.275591
39   -20.509565   -6.6718773   -66.519685
40   -20.069749   -6.4697499   -65.763780
41   -19.640795   -6.2735183   -65.007874
42   -19.222177   -6.0829220   -64.251969
43   -18.813411   -5.8977190   -63.496063
44   -18.414042   -5.7176841   -62.740157
45   -18.023648   -5.5426072   -61.984252
46   -17.641836   -5.3722926   -61.228346
47   -17.268235   -5.2065568   -60.472441
48   -16.902499   -5.0452286   -59.716535
49   -16.544306   -4.8881471   -58.960630
50   -16.193349   -4.7351614   -58.204724
51   -15.849342   -4.5861298   -57.448819
52   -15.512015   -4.4409187   -56.692913
53   -15.181114   -4.2994026   -55.937008
54   -14.856398   -4.1614630   -55.181102
55   -14.537641   -4.0269880   -54.425197
56   -14.224628   -3.8958720   -53.669291
57   -13.917155   -3.7680150   -52.913386
58   -13.615029   -3.6433226   -52.157480
59   -13.318068   -3.5217051   -51.401575
60   -13.026099   -3.4030775   -50.645669
61   -12.738955   -3.2873594   -49.889764
62   -12.456481   -3.1744742   -49.133858
63   -12.178527   -3.0643491   -48.377953
64   -11.904950   -2.9569152   -47.622047
65   -11.635615   -2.8521065   -46.866142
66   -11.370391   -2.7498606   -46.110236
67   -11.109157   -2.6501178   -45.354331
68   -10.851792   -2.5528212   -44.598425
69   -10.598185   -2.4579166   -43.842520
70   -10.348227   -2.3653523   -43.086614
71   -10.101815   -2.2750790   -42.330709
72   -9.8588490   -2.1870495   -41.574803
73   -9.6192344   -2.1012188   -40.818898
74   -9.3828800   -2.0175438   -40.062992
75   -9.1496983   -1.9359835   -39.307087
76   -8.9196051   -1.8564984   -38.551181
77   -8.6925198   -1.7790510   -37.795276
78   -8.4683647   -1.7036052   -37.039370
79   -8.2470652   -1.6301265   -36.283465
80   -8.0285494   -1.5585819   -35.527559
81   -7.8127481   -1.4889399   -34.771654
82   -7.5995947   -1.4211701   -34.015748
83   -7.3890251   -1.3552436   -33.259843
84   -7.1809774   -1.2911326   -32.503937
85   -6.9753918   -1.2288105   -31.748031
86   -6.7722108   -1.1682518   -30.992126
87   -6.5713787   -1.1094320   -30.236220
88   -6.3728420   -1.0523278   -29.480315
89   -6.1765486   -0.9969168   -28.724409
90   -5.9824485   -0.9431775   -27.968504
91   -5.7904931   -0.8910893   -27.212598
92   -5.6006357   -0.8406326   -26.456693
93   -5.4128309   -0.7917884   -25.700787
94   -5.2270347   -0.7445389   -24.944882
95   -5.0432046   -0.6988666   -24.188976
96   -4.8612995   -0.6547552   -23.433071
97   -4.6812795   -0.6121888   -22.677165
98   -4.5031058   -0.5711524   -21.921260
99   -4.3267411   -0.5316315   -21.165354
100  -4.1521488   -0.4936125   -20.409449
101  -3.9792939   -0.4570823   -19.653543
102  -3.8081420   -0.4220283   -18.897638
103  -3.6386599   -0.3884387   -18.141732
104  -3.4708153   -0.3563023   -17.385827
105  -3.3045769   -0.3256083   -16.629921
106  -3.1399142   -0.2963465   -15.874016
107  -2.9767977   -0.2685074   -15.118110
108  -2.8151986   -0.2420818   -14.362205
109  -2.6550889   -0.2170612   -13.606299
110  -2.4964414   -0.1934376   -12.850394
111  -2.3392297   -0.1712032   -12.094488
112  -2.1834279   -0.1503510   -11.338583
113  -2.0290111   -0.1308745   -10.582677
114  -1.8759548   -0.1127674   -9.8267717
115  -1.7242352   -0.0960241   -9.0708661
116  -1.5738293   -0.0806392   -8.3149606
117  -1.4247144   -0.0666081   -7.5590551
118  -1.2768685   -0.0539263   -6.8031496
119  -1.1302704   -0.0425899   -6.0472441
120  -0.9848990   -0.0325954   -5.2913386
121  -0.8407340   -0.0239397   -4.5354331
122  -0.6977556   -0.0166201   -3.7795276
123  -0.5559444   -0.0106344   -3.0236220
124  -0.4152814   -0.0059808   -2.2677165
125  -0.2757483   -0.0026578   -1.5118110
126  -0.1373270   -0.0006644   -0.7559055
127   0: full on   0: full on   0: full on
 

ASSIGN SUBMASTER  Assign/deassign a submaster 
                     to an input or output channel
  type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [06H  06H  ss  nn  01H/00H]
  ss: submaster 00H..1FH
  nn: 00H-0FH for inputs 1 to 16, 20H-2FH for outputs 1 to 16 (AB1616 / 1616HD)
      00H-1FH for inputs 1 to 32, 20H-3FH for outputs 1 to 32 (AB64 only)
      40H-5FH for inputs 33 to 64, 60H-7FH for outputs 33 to 64 (AB64 only)
  01H assigns, 00H deassigns
  message length: 11

ASSIGN SUBMASTER assigns or deassigns an input or output channel to a submaster. More than one input or output channel can be assigned to a given submaster by sending multiple ASSIGN SUBMASTER commands. Similarly, more than one submaster may be assigned to a given input or output channel.

Saved submaster assignments are automatically recalled from disk during AudioBox initialization.When a submaster is deassigned, the submaster amplitude level is set to zero.

This command updates only the submaster assignments in RAM. To save the new submaster assignments to disk so that they are restored every time the AudioBox is powered on, follow this command with a SAVE SETTINGS command. In a new AudioBox, following a "clear all user data" command (see CLEAR DATA) and when a show is opened containing a setup cue, all submasters are deassigned.


DEASSIGN SUBMASTER deassign all channels from a submaster 
type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [06H  00H  1DH ss 00H]
  ss: submaster 00H..1FH
  message length: 11

DEASSIGN SUBMASTER deassigns all input and output channels from a submaster.When a submaster is deassigned, the submaster amplitude level is set to zero.

This command updates only the submaster assignments in RAM. To save the new submaster assignments to disk so that they are restored every time the AudioBox is powered on, follow this command with a SAVE SETTINGS command. In a new AudioBox, following a "clear all user data" command (see CLEAR DATA) and when a show is opened containing a setup cue, all submasters are deassigned.

DEASSIGN SUBMASTER I/O deassign all input or output channels from a submaster 
type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [06H  00H  20H ss ii]
  ss: submaster 00H..1FH
  ii: 00H: all inputs, 01H all outputs
  message length: 11

DEASSIGN SUBMASTER I/O deassigns all input or output channels from a submaster.When a submaster is deassigned, the submaster amplitude level is set to zero.

This command updates only the submaster assignments in RAM. To save the new submaster assignments to disk so that they are restored every time the AudioBox is powered on, follow this command with a SAVE SETTINGS command. In a new AudioBox, following a "clear all user data" command (see CLEAR DATA) and when a show is opened containing a setup cue, all submasters are deassigned.


SET SUBMASTER GAIN      Set the gain for all submasters
  type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [06H  00H  11H  gg  00H]
  gg: submaster gain:
    00: 0.75 dB change every four submaster amplitude steps
    01: 0.75 dB change every two submaster amplitude steps
    02: 0.75 dB change every submaster amplitude step
    03: 1.50 dB change every submaster amplitude step
  message length: 11

SET SUBMASTER GAIN sets the gain for all submasters. Changing a submaster amplitude level changes all control points assigned to the submaster in 0.75 dB increments. The submaster gain setting determines whether a 0.75 dB change takes place with every four submaster amplitude steps (lowest gain), with every two steps, with every step or two increments (1.5 dB) with every step (highest gain).

The available submaster gain control range will depend on the current input, output and crosspoint settings, as well as the submaster gain and zero settings, and is in any case within the limits of -96 dB to +95.25 dB. The overall input to output gain of the AudioBox never goes above unity.

The saved submaster gain setting is automatically recalled from disk during AudioBox initialization. In a new AudioBox and following a "clear all user data" command (see CLEAR DATA), submaster gain is set to '02': 0.75 dB change with every submaster amplitude step.

This command updates only the submaster gain setting in RAM. To save the new submaster gain setting to disk so that it is restored every time the AudioBox is powered on, follow this command with a SAVE SETTINGS command. When a show is opened containing a setup cue, submaster gain is reset to '02', its default value.


SET SUBMASTER ZERO Set the zero dB amplitude level for all submasters
  type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [06H  00H  12H  zz  00H]
  zz: amplitude number for submaster zero, 00H..7FH
  message length: 11

SET SUBMASTER ZERO sets the zero dB amplitude level for all submasters. Submaster amplitude levels above this number boost the gain of all assigned control points, and submaster amplitude levels below this number cut the gain of all assigned control points. Changing the submaster zero may cause immediate shifts in signal levels from the AudioBox.

The amount of submaster gain control available will depend on the current input, output and crosspoint settings, as well as the submaster gain and zero settings, and is in any case within the limits of -96 dB to +95.25 dB. The overall input to output gain of the AudioBox never goes above unity.

In a new AudioBox and following a "clear all user data" command (see CLEAR DATA), submaster zero is set to 40H.

This command updates only the submaster zero setting in RAM. To save the new submaster zero setting to disk so that it is restored every time the AudioBox is powered on, follow this command with a SAVE SETTINGS command. When a show is opened containing a setup cue, submaster gain is reset to 40H, its default value.


SET SUBMASTER LEVEL      Set the amplitude level of a submaster
  type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [06H  00H  06H  ss  aa]
  ss: submaster 00H..1FH
  aa: amplitude, 00H..7FH
  message length: 11

SET SUBMASTER LEVEL sets the amplitude level for a specified submaster. Gain changes made by changing submaster amplitude levels take place instantaneously. The amount of cut or boost for a particular submaster amplitude level is determined by the submaster gain setting and the submaster zero setting.

The amount of submaster gain control available will depend on the current input, output and crosspoint settings, as well as the submaster gain and zero settings, and is in any case within the limits of -96 dB to +95.25 dB. The overall input to output gain of the AudioBox never goes above unity.

When the AudioBox is powered on, all submaster levels are set to zero dB (i.e. the submasters makes no change to the amplitude setting of their assigned control point or points).


ASSIGN CONTROLLER   Assign/deassign a submaster to a MIDI 
                       continuous controller 
 
  type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [06H  07H  cc  ss  01H/00H]
  cc: MIDI  controller number 00H..7FH 
  ss: submaster 00H..1FH (not used for deassign commands)
  01H assigns, 00H deassigns
  message length: 11

ASSIGN CONTROLLER assigns or deassigns a submaster to a MIDI continuous controller. A submaster cannot be assigned to more than one continuous controller; a command that attempts to do so will be counted as an error. If a continuous controller already has a submaster assigned to it, the assign version of this command will overwrite the previous assignment (assuming the submaster being assigned is not already assigned to a different controller).

Following a controller assignment, a MIDI continuous controller message to an enabled MIDI channel directly sets the amplitude level of the submaster assigned to it. (When the AudioBox is switched into MOTOR MIX mode, incoming MIDI continuous controller messages are no longer connected to assigned submasters.)

When a controller is deassigned, the amplitude level of the submaster to which is was assigned is set to zero dB (i.e. the submaster makes no change to the amplitude setting of the assigned control point or points).

MIDI continuous controller and SET SUBMASTER LEVEL messages can be mixed in the same incoming command stream, with the resulting submaster level always set by the most recently received message.

Valid MIDI continuous controller messages have the following form:

    Bx cc vv
      Bx: status byte, x is MIDI channel
      cc: controller number 00H..7FH
      vv: control value 00H..7FH

MIDI running status is supported by the MIDI driver (but not the SCSI SEND command). MIDI running status means that after a full three-byte continuous controller message (above) is sent, the status byte (Bx) may be omitted from any number of subsequent continuous controller messages, assuming no other MIDI messages (which always start with a status byte) are sent in between and that the messages are being sent to the same MIDI channel.

This command updates only the controller assignments in RAM. To save the new controller assignments to disk so that they are restored every time the AudioBox is powered on, follow this command with a SAVE SETTINGS command. In a new AudioBox, following a "clear all user data" command (see CLEAR DATA) and when a show is opened containing a setup cue, all controllers are deassigned.


SET MIDI CHANNEL   set MIDI channel for controller messages
  type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [06H  00H  17H   nn 01H] to set specific channel
                     [06H  00H  17H  00H 00H] to enable all channels
  nn: MIDI  channel number 00H..0FH
  message length: 11

SET MIDI CHANNEL sets the AudioBox to respond to a specific MIDI channel or all MIDI channels. The MIDI channel set by this command only affects continuous controller messages; all other AudioBox MIDI messages are system exclusive messages, which do not have a MIDI channel number. If this command is sent with a 01H as the last data byte, the AudioBox will subsequently respond only to continuous controller messages sent on the specified MIDI channel. If this command is sent with a 00H as the last data byte, the AudioBox will then respond to all MIDI channels. In a new AudioBox and following a "clear all user data" command (see CLEAR DATA), the AudioBox will respond to all MIDI channels.

The currently set MIDI channel can be retrieved from the AudioBox using a GET DISK STATE command.

This command updates only the MIDI channel settings in RAM. To save the new MIDI channel settings to disk so that they are restored every time the AudioBox is powered on, follow this command with a SAVE SETTINGS command. When a show is opened containing a setup cue, all MIDI channels are enabled.


Section 3: Mute/Solo Commands

NOTE: When the AudioBox is powered on, all inputs and outputs are unmuted and unsoloed.


MUTE INPUT CHANNEL      Mute/unmute specified input channel
  type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [06H  00H  07H  ii  01H/00H]
  ii: input channel number, 00H..0FH for inputs 1 to 16
  01H mutes channel, 00H unmutes channel
  message length: 11

MUTE INPUT CHANNEL mutes or unmutes a specified input channel. Muted channels act as if their level is zero (maximum attenuation). Level commands continue to be received and level ramps continue to operate. When unmuted, a channel reverts to its current level (not necessarily the level it had when it was muted, depending on ongoing level commands for that channel). Muting a soloed channel will mute the channel,overriding the solo. When a muted and soloed channel is unmuted, it will be soloed.


MUTE OUTPUT CHANNEL     Mute/unmute specified output channel
  type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [06H  00H  08H  oo  01H/00H]
  oo: output channel number, 00H..0FH for outputs 1 to 16, 
                             7FH for all channels
  01H mutes channel, 00H unmutes channel
  message length: 11

MUTE OUTPUT CHANNEL mutes or unmutes a specified output channel. If a value of 7FH is sent for the channel number, all output channels are muted. Muted channels act as if their level is zero (maximum attenuation). Level commands continue to be received and level ramps continue to operate. When unmuted, a channel reverts to its current level (not necessarily the level it had when it was muted, depending on ongoing level commands for that channel). Muting a soloed channel will mute the channel,overriding the solo. When a muted and soloed channel is unmuted, it will be soloed.


SOLO INPUT CHANNEL      Solo/unsolo specified input channel
  type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [06H  00H  09H  ii  01H/00H]
  ii: input channel number, 00H..0FH for inputs 1 to 16
  01H solos channel, 00H unsolos channel
  message length: 11

SOLO INPUT CHANNEL solos or unsolos a specified input channel. When any input channel is soloed, only soloed input channels are audible. This is a solo-in-place function. When all input channels are unsoloed, all input channels return to their current level (not necessarily the level they had when they were soloed, depending on ongoing level commands for those channels). Soloing a muted channel will have no effect until the mute is removed, at which time the channel becomes soloed.


SOLO OUTPUT CHANNEL     Solo/unsolo specified output channel
  type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [06H  00H  0AH  oo  01H/00H]
  oo: output channel number, 00H..0FH for outputs 1 to 16
  01H solos channel, 00H unsolos channel
  message length: 11

SOLO OUTPUT CHANNEL solos or unsolos a specified output channel. When any output channel is soloed, only soloed output channels are audible. This is a solo-in-place function. When all output channels are unsoloed, all output channels return to their current level (not necessarily the level they had when they were soloed, depending on ongoing level commands for those channels). Soloing a muted channel will have no effect until the mute is removed, at which time the channel becomes soloed.


Section 4: Delay Commands

NOTE: When the AudioBox is powered on, all delays are set to zero.


SET DELAY        Set delay on an input or output
  type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [06H 00H 10H nn 00H MTC]
  nn: 00H-0FH for inputs 1 to 16, 20H-2FH for outputs 1 to 16 (AB1616 / 1616HD)
      00H-1FH for inputs 1 to 32, 20H-3FH for outputs 1 to 32 (AB64 only)
      40H-5FH for inputs 33 to 64, 60H-7FH for outputs 33 to 64 (AB64 only)
      7FH to set all channels (AB1616 & 1616HD only)
  MTC: delay in seconds, frames and subframes
  message length: 16

SET DELAY sets the delay on an input or output channel using a MIDI time code to set the value of the delay.

AB1616 / 1616HD: Delays can be set to any time value, but the total amount of delay for all inputs plus all outputs must be less than 5.2 seconds. For example, a delay of 162 milliseconds could be set for every input and every output. If the channel number is set to 7FH, all input and output channels will be set to the time specified. This can be used, for example, to clear all delays to zero.

AB64: Input and output delays are implemented by setting the delay values for all crosspoints on the input or output. See SET XPT DELAY for information on total delay available.

A form of the CLEAR DATA command can be used to set all delays to zero (AB64 only).


SET DELAY SAMPLES        Set delay in samples on an input or output
  type: sysex  
  [cmd/data field]:  [1BH nn ss ss ss]
  nn: 00H-0FH for inputs 1 to 16, 20H-2FH for outputs 1 to 16 (AB1616 / 1616HD)
      00H-1FH for inputs 1 to 32, 20H-3FH for outputs 1 to 32 (AB64 only)
      40H-5FH for inputs 33 to 64, 60H-7FH for outputs 33 to 64 (AB64 only)
      7FH to set all channels (AB1616 & 1616HD only)
  ss: delay in samples (1/48000 second), 
      (lsb first, 21 bit unsigned value, 7 bits per byte)
  message length: 13

SET DELAY sets the delay on an input or output channel using number of samples to set the value of the delay. One sample is one 48000th of a second, or 20.83 microseconds.

Models 1616HD and AB1616: The total amount of delay for all inputs plus all outputs must be less than 5.2 seconds. For example, a delay of 162 milliseconds could be set for every input and every output. If the channel number is set to 7FH, all input and output channels will be set to the time specified.This can be used, for example, to clear all delays to zero.

AB64: Input and output delays are implemented by setting the delay values for all crosspoints on the input or output. See SET XPT DELAY for information on total delay available.

A form of the CLEAR DATA command can be used to set all delays to zero (AB64 only).


SET XPT DELAY        Set delay in samples on a crosspoint
  type: sysex,  AB64 only
  [cmd/data field]:  [16H ii oo ss ss ss MTC]
  ii: input channel 0..3FH for inputs 1..64
  oo: output channel 0..3FH for outputs 1..64
  ss: delay in samples (1/48000 second), 
      (lsb first, 21 bit unsigned value, 7 bits per byte)
  MTC: ramp time MTC (5 bytes)
  message length: 19

SET XPT DELAY sets the delay, in samples, on a crosspoint. One sample is one 48000th of a second, or 20.83 microseconds. Smooth delay changes are achieved by gain crossfading between the signal at the current delay and the signal at the new delay. The crossfade is performed over the specified ramp time. Note that if a SET XPT DELAY command arrives for a crosspoint that is currently being crossfaded due to a previous SET XPT DELAY, SET DELAY or SET DELAY SAMPLES command, the incoming command will wait for the previous crossfade to complete. This is necessary to prevent audio artifacts during the delay crossfade. However, incoming SET INPUT LEVEL, SET OUTPUT LEVEL and SET CROSSPOINT LEVEL commands that affect a crosspoint that is currently being delay-crossfaded are processed immediately.

The total delay memory on each AB64 DSP card is 5.461 seconds, or a total of 21.845 seconds in a 64 channel AB64. This memory is allocated into groups of delay lines of variable length, with each delay line associated with one matrix input signal, and with one group of 64 delay lines associated with 8 output channels. The maximum delay line length is 682 milliseconds. Delay is implemented at the crosspoints; the input delay lines are tapped at the appropriate location for each output to set the total delay at a crosspoint. Input and output delay settings add to the total crosspoint delay for one entire row or column of the matrix. Delay memory can be divided between ranges of inputs, see ALLOCATE DELAY.

A form of the CLEAR DATA command can be used to set all delays to zero (AB64 only).


ALLOCATE DELAY        Allocate delay memory
  type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [06H  00H  23H  nn  00H]
  nn: 00H-40H number of input channels on which to allocate delay
  message length: 11

ALLOCATE DELAY allocates the total available delay memory to a range of input channels, starting at channel 1, with each input channel in the range receiving an equal allocation. This command provides a way to get longer delays for the first 'nn' input channels by making delay unavailable for all inputs above that range. Due to the memory architecture, setting the number of input channels less than 4 has the same effect as setting the number to 4: all delay memory is allocated to the first 4 inputs, resulting in 682 milliseconds of delay available at each of the first four inputs.

Note that at the instant this command is executed, audio artifacts may be generated; it is best to perform this command with all input or output channels zeroed or muted.

When the AB64 is powered on, this allocation is done automatically using the total number of input channels configured. Thus the default allocation is for all delay memory to be equally divided between all input channels in the unit. The number of input channels in the unit is set by the number of DSP cards installed.

The current number of inputs and size of delay allocation is available in the disk state structure (see GET DISK STATE EN).

ENABLE DELAY     Enable or bypass delay on an input or output
  type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [06H  00H  0BH  nn  01H/00H]
  nn: 00H-0FH for inputs 1 to 16, 20H-2FH for outputs 1 to 16 (AB1616 / 1616HD)
      00H-1FH for inputs 1 to 32, 20H-3FH for outputs 1 to 32 (AB64 only)
      40H-5FH for inputs 33 to 64, 60H-7FH for outputs 33 to 64 (AB64 only)
  01H enables delay, 00H bypasses delay
  message length: 11

ENABLE DELAY enables or bypasses delay on an input or output channel.


Section 5: EQ Commands

NOTE: When the AudioBox is powered on, the number of bands on every channel is set to zero (all filters bypassed). All coefficients are uninitialized, and must be set before enabling any filters.

Each input and output channel of the AudioBox can be equalized with up to twelve second-order filter sections (bands) connected in series (cascaded biquads). Complex filters can be built up from combinations of the second-order sections.

EQ Coefficients

The response curve of each second-order section (band) of a channel's equalization is set by specifying five filter coefficients, a0, a1, a2, b0 and b1. Each second order section implements the z-plane transfer function:

   F(z) = (a2*z^2 + a1*z + a0) / (z^2 + b1*z + b0)

All coefficients must be greater than -2.0 and less than 2.0. A coefficient is represented as a 28-bit fixed-point binary number with the binary point at bit 23, and bit 27 the sign bit (e.g. a "1" is hex 0800000, a -1 is F800000). The valid coefficient range, -2..2, in 28-bit fixed-point binary representation is EFFFFFF..0FFFFFF. For encoding into a MIDI system exclusive message (wherein the most significant bit (msb) of each byte must be zero), the 28-bit binary number is split into four MIDI bytes. The 7 least significant bits are sent in 1st byte, the next 7 bits in byte 2, the next 7 bits in byte 3, and the 7 most significant bits in the 4th byte.Various proprietary and public domain programs are available to calculate filter coefficients.

Models AB1616 and 1616HD: The EQ on a given channel can have up to 12 bands. All of these bands may have coefficients stored in them at any time, but the total number of active bands available simultaneously is 20 per group. The four groups are:

        A: Inputs 0,4,8,12  and Outputs 0,1,8,9
        B: Inputs 1,5,9,13 and Outputs 2,3,10,11
        C: Inputs 2,6,10,14 and Outputs 4,5,12,13
        D: Inputs 3,7,11,15 and Outputs 6,7,14,15

Model AB64: The EQ on a given channel can have up to 7 bands. All of these bands are available at all times; there are no group restrictions.


SET EQ COEFFICIENTS   Set EQ band coefficients and parameters
  type: sysex  
  [cmd/data field]: [02H nn bb a2 a1 a0 b1 b0 tt ff ff ff ww ww gg gg]
  nn: 00H-0FH for inputs 1 to 16, 20H-2FH for outputs 1 to 16 (AB1616 / 1616HD)
      00H-1FH for inputs 1 to 32, 20H-3FH for outputs 1 to 32 (AB64 only)
      40H-5FH for inputs 33 to 64, 60H-7FH for outputs 33 to 64 (AB64 only)
  bb: band 00H..0BH for bands 0 to 11 (AB1616 & 1616HD), 0 to 6 (AB64)
  a2, a1, a0, b1, b0: 5 filter coefficients, 4 bytes ea. See 
    EQ Coefficients, above.
  tt: filter type: 0:none, 1:low shelf, 2:peaking, 3:high shelf, 4:low pass, 
                   5:high pass, 6:notch 7:bandpass
  ff ff ff: centre frequency * 100 (e.g. 22575 for 225.75 Hz)
    (2000..2000000  lsb first, 21 bit unsigned value, 7 bits per byte)
  ww ww: bandwidth * 10 
         (10..990 for 1%..99% of centre frequency)
         (lsb first, 14 bit unsigned value, 7 bits per byte)
  gg gg: gain in dB * 10 (e.g. 156 for +15.6 dB)
         (-300..300, lsb first, 14 bit signed value, 7 bits per byte)
message length: 39

SET EQ COEFFICIENTS sets the coefficients and the parameters (filter type, centre frequency, bandwidth and gain) for one of the bands (second order sections) of the parametric filter on a specified input or output channel. The coefficients are range checked; if any of the five coefficients are outside the valid range (EFFFFFFH..0FFFFFFH, equivalent to -2..+2), the command is rejected.The parameter information is not used by the AudioBox, only stored for recall via GET EQ, GET ALL EQ and GET EQ EN. The parameter data is not verified on input.

The filter coefficients and parameters can be returned from the AudioBox using the GET EQ, GET ALL EQ and GET EQ EN commands.

For backward compatibility, the AudioBox 1616HD and AB1616 accepts this command without parameters, in which case the message length is 31, and the command / data field is defined as:

  [cmd/data field]: [02H nn bb a2 a1 a0 b1 b0]

If sent without parameters, the filter type is set to 0 (none), and the other parameter fields returned from the AudioBox using the GET EQ, GET ALL EQ and GET EQ EN commands contain invalid data.

EQ changes made on an unmuted channel may result in audible artifacts.


SET EQ BANDS   Set the number of active bands on a filter
  type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [06H  00H  0CH  nn  bb]
  nn: 00H-0FH for inputs 1 to 16, 20H-2FH for outputs 1 to 16 (AB1616 / 1616HD)
      00H-1FH for inputs 1 to 32, 20H-3FH for outputs 1 to 32 (AB64 only)
      40H-5FH for inputs 33 to 64, 60H-7FH for outputs 33 to 64 (AB64 only)
  bb: number of bands, 0 to 12 (AB1616 & 1616HD), 0 to 7 (AB64), 0 bypasses filter
  message length: 11

SET EQ BANDS sets the number of active bands (second order sections) for the filter on a specified input or output channel, enabling the filter. The coefficients for the EQ bands being enabled (bands 00 through bb-1 inclusive) must have been previously set (see SET/STORE EQ COEFFICIENTS). Setting the number of bands for a filter to zero disables the filter, without erasing any coefficients that were previously set.

There is a limit on the number of bands available per channel group. See EQ Coefficients. If more bands are requested than are available, some filter bands in the group will not be set (not necessarily the most-recently requested).

EQ changes made on an unmuted channel may result in audible artifacts.


Section 6: Show Control Commands


SET DEFAULT SHOW     Set show to be opened when the AudioBox is powered on
  type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [06H  00H  0EH  ss 00H]
  ss: show number
message length: 11

SET DEFAULT SHOW sets the show number to be opened automatically when the AudioBox is powered on. Valid show numbers range from 1 to 127. If no show is stored on the internal disk drive at the default show number, no show is automatically opened. NOTE: In firmware versions prior to T227 and V663, when the AudioBox is powered on, it automatically opens the lowest numbered show currently stored on the internal disk drive.

After the show is opened, the cue lists in the show are scanned in order, and all cue lists having the "Open List when Show Opened" flag set are automatically opened (up to the maximum number of open lists), and the first cue path in each cue list is opened.

The current default show number can be retrieved from the AudioBox using a GET DISK STATE command.

This command saves the default show number to disk. (It is not necessary to follow this command with a SAVE SETTINGS command.) In a new AudioBox and following a "clear all user data" command (see CLEAR DATA), the default show is show number one.


OPEN_CUE_LIST     Load show / list in from disk
  type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [1BH sn.ln]
  sn: show number string
  ln: list number string (optional)
  message length: 8..19

OPEN_CUE_LIST loads a Show from disk and/or opens a Cue List in the Show, making the Show and Cue List available to all other commands. The show number string is required. Valid show numbers range from 0 to 127. A zero can be used as the show number to open a list in the currently open show. A period character ('.') separates the show number string from the list number string, if a list number string is included. If the show specified in the command is not already loaded, it is read from disk. If the specified show is not already loaded and another show has been previously loaded, the previous show is closed and all open Cue Lists are closed before the new Show is loaded from disk.

If no Cue List is specified (or specified as "0"), after the Show is loaded, the Cue Lists in the Show are scanned in order, and all Cue Lists having the "Open List when Show Opened" flag set are automatically opened (up to the maximum number of open lists, see next paragraph), and the first Cue Path in each Cue List is opened. If a Cue List is specified, it is opened. Valid list numbers range from 1 to 127.

The maximum number of Cue Lists that can be open at one time is 2 for the 1616HD, 8 for the AB1616 and 8 for the AB64. If the maximum number of Cue Lists are already open, the command ends in error. When a Cue List is opened, the first Cue Path in the Cue List is also opened, and cues in it can be accessed by normal show requirements.

If the specified Show or Cue List is already open or if it does not exist, no change occurs. Leading zero characters are acceptable in all number strings (show, list, path and cue), which must be five or fewer decimal digits in length.

NOTE that when the AudioBox is powered on, it automatically opens the default show (see SET DEFAULT SHOW).


CLOSE_CUE_LIST     Make list unavailable
  type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [1CH ln]
  ln: list number string
  message length: 8..13

CLOSE_CUE_LIST makes a Cue List unavailable to all other commands and excludes any cues it may contain from the current show. When CLOSE_CUE_LIST is received, the specified Cue List becomes inactive and cues in it cannot be accessed by normal show requirements, but the status of the cues in the list does not change, unless another List is opened. List number is specified as a number string, with valid list numbers in the range from 1 to 127. If no Show is loaded or if the specified Cue List is already closed or if it does not exist, no change occurs. Leading zero characters are acceptable in all number strings (show, list, path and cue), which must be five or fewer decimal digits in length.


OPEN_CUE_PATH     Load cue path in from disk
  type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [1DH ln.pn]
  ln: list number string
  pn: path number string
  message length: 8..19

OPEN_CUE_PATH loads a cue path from disk, making all cues in the path accessible without delay. Both the list number string and path number string are required (except when opening the MTC generator, see below), separated by a period character ('.'). The specified list is opened, if it is not already open. If a path is already open for the specified list, it is closed before the new path is opened. If the specified Cue Path is already open, no change occurs. If the specified list is not already open and the maximum number of lists are already open, the commands ends in error. If the specified Cue Path does not exist, the commands ends in error. Valid cue list numbers range from 1 to 127. Valid path numbers range from 1 to 2047. Leading zero characters are acceptable in all number strings (show, list, path and cue), which must be five or fewer decimal digits in length.

When a Cue Path is opened, all data in the Path is read entirely into system RAM. A GO command specifying a cue in the open Cue Path will run immediately; just as fast as if a LOAD command had been sent prior to sending the GO. However, in the event that the next cue to be started is not in the currently open Cue Path, an OPEN_CUE_PATH command must be sent prior to sending a GO command specifying that cue, if the delay in reading the Path data from disk (on the order of 250 milliseconds) is to be avoided.

List number 128 refers to the MTC Generator. An OPEN_CUE_PATH command to list 128 (no path required) enables the MTC Generator. The MTC Generator must be enabled before it can be started with a START CLOCK command. The path number string in this case is used to specify the frames per second and is one of ["24", "25", "30"]. If not specified, the MTC Generator defaults to 30 frames per second.


CLOSE_CUE_PATH     Make cue path unavailable
  type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [1EH ln.pn]
  ln: list number string
  pn: path number string
  message length: 8..19

CLOSE_CUE_PATH makes a cue path unavailable to all other commands and excludes any cues it may contain from the current show. Both the list number string and path number string are required, separated by a period character ('.'). If the specified Cue Path is already closed or if it does not exist, no change occurs. Valid list numbers range from 1 to 127. Valid path numbers range from 1 to 2047. Leading zero characters are acceptable in all number strings (show, list, path and cue), which must be five or fewer decimal digits in length.

List number 128 refers to the MTC Generator. A CLOSE_CUE_PATH command to list 128 disables the MTC Generator.


GO     Start specified or next cue
type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]: [01H] or [01H cn] or 
                    [01H cn 00H ln] or [01H cn 00H ln 00H pn]
  cn: cue number string (optional)
  ln: list number string (optional, cn must be specified if ln is specified)
  pn: path number string (optional, ln must be specified if pn is specified)
  message length: 7..24

GO (with a command format byte of 10) starts a specified (or the next) cue in a specified (or all open) cue lists. There are four forms of the GO command:

Cues are specified as a string of 1, 2, 3, 4 or 5 numbers. The first number is the major cue number, followed by up to four optional subsection numbers, each separated by a period character ('.'), for example "533.12.255.33.6". Valid major cue numbers range from 1 to 65535. Valid subsection numbers range from 0 to 255. Valid list numbers range from 1 to 127. Valid path numbers range from 1 to 2047. Leading zero characters are acceptable in all number strings (show, list, path and cue), which must be five or fewer decimal digits in length.

MIDI Program Change messages can also be used to start cues. An external device generating MIDI Program Change messages is connected to MIDI IN 1 connector on the back panel of the AB64. Cues in the currently-open show that do not have subsection numbers (e.g. cue 24 but not cue 24.1) will GO when a program change message containing that cue number is received on MIDI port 1. For incoming program change messages, the MIDI channel number is used to select banks of 128 cue numbers. Cues 1 through 127 are available on MIDI channel 0, cues 128 through 255 are available on MIDI channel 1, etc. Using all 16 MIDI channel numbers, a total of 2048 cue numbers are available. Note that as usual, cue 0 (in this case a program change message on MIDI channel 0 with a program change number of 0) means to run the next (standby) cue.


LOAD     Load specified cue to standby
type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]: [05H cn 00H ln] or [05H cn 00H ln 00H pn]
  cn: cue number string
  ln: list number string
  pn: path number string (optional, ln must be specified if pn is specified)
  message length: 7..24

LOAD (with a command format byte of 10) loads to standby a specified cue in all open lists, in a specified cue list, or a specified list and path. There are three forms of the LOAD command:

Cues are specified as a string of 1, 2, 3, 4 or 5 numbers. The first number is the major cue number, followed by up to four optional subsection numbers, each separated by a period character ('.'), for example "533.12.255.33.6". Valid major cue numbers range from 1 to 65535. Valid subsection numbers range from 0 to 255. Valid list numbers range from 1 to 127. Valid path numbers range from 1 to 2047. Leading zero characters are acceptable in all number strings (show, list, path and cue), which must be five or fewer decimal digits in length.


STOP     Stop a currently running cue or all currently running cues
type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]: [02H] or [02H  cn] or 
                    [02H  cn 00H ln]
  cn: cue number (optional)
  ln: list number string (optional, cn must be specified if ln is specified)
  message length: 7..18

STOP (with a command format byte of 10) stops a currently running cue or all currently running cues. There are three forms of the STOP command:

Cues are specified as a string of 1, 2, 3, 4 or 5 numbers. The first number is the major cue number, followed by up to four optional subsection numbers, each separated by a period character ('.'), for example "533.12.255.33.6". Valid major cue numbers range from 1 to 65535. Valid subsection numbers range from 1 to 255. Valid list numbers range from 1 to 127. Valid path numbers range from 1 to 2047. Leading zero characters are acceptable in all number strings (show, list, path and cue), which must be five or fewer decimal digits in length.


RESUME     Restart a currently stopped cue or all currently stopped cues
type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [03H] or [03H  cn] or 
                    [03H  cn 00H ln]
  cn: cue number (optional)
  ln: list number string (optional, cn must be specified if ln is specified)
  message length: 7..18

RESUME restarts a currently stopped cue or all currently stopped cues. There are three forms of the RESUME command:

Cues are specified as a string of 1, 2, 3, 4 or 5 numbers. The first number is the major cue number, followed by up to four optional subsection numbers, each separated by a period character ('.'), for example "533.12.255.33.6". Valid major cue numbers range from 1 to 65535. Valid subsection numbers range from 1 to 255. Valid list numbers range from 1 to 127. Valid path numbers range from 1 to 2047. Leading zero characters are acceptable in all number strings (show, list, path and cue), which must be five or fewer decimal digits in length.


GO/JAM CLOCK     Start specified or next cue and set list clock to cue time
type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [10H] or [10H cn] or 
                    [10H cn 00H ln] or [10H cn 00H ln 00H pn]
  cn: cue number string (optional)
  ln: list number string (optional, cn must be specified if ln is specified)
  pn: path number string (optional, ln must be specified if pn is specified)
  message length: 7..24

GO/JAM CLOCK starts a specified (or next) cue and sets the list clock to the time programmed into the cue. The command is ignored if the cue is a manual cue (i.e. 'cuetime' field of the abcue record equal to zero). The operation is exactly the same as GO, except that in addition to starting the cue, the time programmed into the cue (in the 'cuetime' field of the abcue record) is used to set (jam) the list clock. If the command starts cues in more than one list, each list clock is set.


STANDBY+ Place into standby the next cue after the cue currently in standby
type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [11H  ln]
  ln: list number string (optional)
  message length: 7..12

STANDBY+ places into standby the numerically next cue after the cue currently in standby. If the list number string is not specified, the standby cue is incremented in all open lists. If the list number string is specified, the standby cue is incremented in only the list specified. If the cue currently in standby is the last cue in a path, the next path is opened. Valid list numbers range from 1 to 127. Leading zero characters are acceptable in all number strings (show, list, path and cue), which must be five or fewer decimal digits in length.

STANDBY- Place into standby the previous cue 
                before the cue currently in standby
type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [12H  ln]
  ln: list number string (optional)
  message length: 7..12

STANDBY- places into standby the numerically previous cue before the cue currently in standby. If the list number string is not specified, the standby cue is decremented in all open lists. If the list number string is specified, the standby cue is decremented in only the list specified. If the cue currently in standby is in the first cue in a path, the previous path is opened. Valid list numbers range from 1 to 127. Leading zero characters are acceptable in all number strings (show, list, path and cue), which must be five or fewer decimal digits in length.

SET_CLOCK     Set list clocks
type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [18H  MTC  ln]
  MTC: hr mn sc fr ff: time value to set clock to
  ln: list number string (optional)
  message length: 12..17

SET_CLOCK sets one or more list clocks to the value sent. If the list number string is not specified, the clock is set in all open lists. If the list number string is specified, the clock is set in only the list specified. Valid list numbers range from 1 to 127. Leading zero characters are acceptable in all number strings (show, list, path and cue), which must be five or fewer decimal digits in length.

List number 128 refers to the MTC Generator. A SET_CLOCK command to list 128 sets the MTC Generator clock if the MTC Generator is enabled. If the list number string is not specified, the MTC Generator clock is set, as well as the list clocks in all open lists.

START_CLOCK    Start list clocks
type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [15H  ln]
  ln: list number string (optional)
  message length: 7..12

START_CLOCK starts one or more list clocks. If the list number string is not specified, the list clock is started in all open lists. If the list number string is specified, the clock is started in only the list specified. If the clock is already running, no change occurs. Valid list numbers range from 1 to 127. Leading zero characters are acceptable in all number strings (show, list, path and cue), which must be five or fewer decimal digits in length.

List number 128 refers to the MTC Generator. A START_CLOCK command to list 128 starts the MTC Generator if it is enabled. If the list number string is not specified, the MTC Generator is started, as well as the list clocks in all open lists.

STOP_CLOCK    Stop list clocks
type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [16H  ln]
  ln: list number string (optional)
  message length: 7..12

STOP_CLOCK stops one or more list clocks. If the list number string is not specified, the clock is stopped in all open lists. If the list number string is specified, the clock is stopped in only the list specified. If the clock is already stopped, no change occurs. MIDI Note Off messages are sent on the MIDI OUT port to all channels with noteOffMask flags set in all lists whose clocks are stopped.Valid list numbers range from 1 to 127. Leading zero characters are acceptable in all number strings (show, list, path and cue), which must be five or fewer decimal digits in length.

List number 128 refers to the MTC Generator. A STOP_CLOCK command to list 128 stops the MTC Generator if it is enabled. If the list number string is not specified, the MTC Generator is stopped, as well as the list clocks in all open lists.

ZERO_CLOCK    Zero the list clock
type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [17H  ln]
  ln: list number string (optional)
  message length: 7..12

ZERO_CLOCK sets one or more list clocks to a value of 00:00:00:00.00. If the list number string is not specified, the clock is zeroed in all open lists. If the list number string is specified, the clock is zeroed in only the list specified. Valid list numbers range from 1 to 127. Leading zero characters are acceptable in all number strings (show, list, path and cue), which must be five or fewer decimal digits in length.

List number 128 refers to the MTC Generator. A ZERO_CLOCK command to list 128 zeros the MTC Generator clock if the MTC Generator is enabled. If the list number string is not specified, the MTC Generator clock is zeroed, as well as the list clocks in all open lists.

MTC_CHASE_ON   Make the list clock follow MIDI Time Code
type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [19H ln]
  ln: list number string (optional)
  message length: 7..12

MTC_CHASE_ON makes one or more list clocks follow MIDI Time Code (MTC). If the list number string is not specified, the list clock in all open lists is made to follow incoming MTC. If the list number string is specified, the list clock in the specified list is made to follow incoming MTC. (Incoming MTC must be going forward in time. The AudioBox does not track backward-going MTC.)

The 'list clock type' flag in the 'ablist' structure determines whether or not the list clock for a list follows MTC when the list is opened. Once a list is opened, this command allows the 'list clock type' flag to be set to MTC.

Note that from when an AudioBox is powered up until valid MTC is first received, setting any list or sequence clock to MTC has no effect; the clock will continue to follow the internal stopwatch. The 'MTCreceived' flag in the GET SHOW data structure, when true, indicates valid MTC has been received.

MTC_CHASE_OFF   Make the list clock not follow MIDI Time Code
type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [1AH ln]
  ln: list number string (optional)
  message length: 7..12

MTC_CHASE_OFF makes one or more list clocks follow the internal timebase (i.e. no longer follow MTC). If the list number string is not specified, the list clock in all open lists is made to follow the internal timebase. If the list number string is specified, the list clock in the specified list is made to follow the internal timebase.

The 'list clock type' flag in the 'ablist' structure determines whether or not the list clock for a list follows MTC when the list is opened. Once a list is opened, this command allows the 'list clock type' flag to be set to stopwatch (internal timebase).

SET MTC SOURCE    Set source of MTC for list clock
type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [06H  00H  14H ln ss]
  ln: list number, 1..127 (note: not a list number string)
  ss: 01H MTC source internal, 00H MTC source external
  message length: 11

The SET MTC SOURCE command sets whether the source of MIDI Time Code (MTC) for a specified list clock is the internal MTC generator or the external MIDI input. (This command is available in AudioBox firmware version T255/V683 and above.) If the specified list is not open, the command has no effect.

The 'MTC source' flag in the 'ablist' structure determines the source for MTC when a list is first opened. Once a list is opened, this command allows the 'MTC source' flag to be changed.

This setting has an effect only if the list clock type is set to MTC, rather than stopwatch (internal timebase) (see MTC_CHASE_ON and 'list clock type' flag in the 'ablist' structure ). The current list flags can be retrieved using GET SHOW.

SET SLAVE MODE    Set List Clock Slave mode on or off
type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [06H  00H  1CH  ln sm]
  ln: list number, 1..127 (note: not a list number string)
  sm: 01H enables Slave mode, 00H disables Slave mode
  message length: 11

The SET SLAVE MODE turns on and off slave mode for a particular list clock. (This command is available in AudioBox firmware version T255/V683 and above.) If the specified list is not open, the command has no effect.

The 'List Clock Slave Mode' flag in the 'ablist' structure determines the list clock slave mode when a list is first opened. Once a list is opened, this command allows the 'List Clock Slave Mode' flag to be changed.

List clock slave mode, when enabled for a list clock, attempts to adjust the standby cue in the list to be the next cue after the new clock time, when the list clock (internal MTC, external MTC or stopwatch) jumps forward or backward in time. The standby cue adjustment process is triggered by a jump in list clock time of more than 20 frames. Only cues that are in the currently-open path are searched for the new standby cue.

The simplest situation is when all cues in the path are in chronological order. Even if this is not the case, list clock slave mode tries to find the most likely intended area of the cue list after a jump in list clock time. The algorithm used is as follows: If the list clock jumped forward in time, the search for the new standby cue starts at the current standby cue and goes forward in the currently-open path, until the first cue is found whose cue time is after the new list clock time (minus 20 frames to allow for time code synchronization). This cue then becomes the standby cue. If no such cue is found, the search is made backwards from the current standby cue, until a cue is found whose cue time is after the new list clock time, while the time of the preceding cue is before the new list clock time. If no such cue is found, no change is made to the standby cue. If the list clock jumped backward in time, the search order is reversed - first backwards, then forwards from the current standby cue. In this case ( list clock jumped backward), if the new list clock time is before the cue time of all cues in the path, the standby cue is set to the first cue in the path.


SET ALL_OFF ACTIONS   Set up actions to occur with ALL_OFF command 
type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [06H 00H 19H ff 00H]
  message length: 11
  ff: actions flags:
  bit   action
   0    mute all output channels of the mixer
   1    stop all playback
   2    stop all list clocks in the show controller and MTC Generator
   3    send ALL_NOTES_OFF messages as defined in the current show
   4    clear all playback stop notifications (before stopping playback
   5    clear all playback resume locations
   6    undefined, reserved, set to zero
   7    always zero

The SET ALL_OFF ACTIONS command sets or clears flags which determine what actions will be taken by the AudioBox on receipt of a MIDI Show Control ALL_OFF command (below). If a bit in the flags byte is set the associated action is performed and if the bit is cleared the action is not performed by ALL_OFF.

The currently-set ALL_OFF action flags can be retrieved from the AudioBox using a GET DISK STATE command.

This command sets only the current ALL_OFF action flags in RAM. To make the new ALL_OFF action flags permanent, follow this command with a SAVE SETTINGS command. In a new AudioBox and following a "clear all user data" command (see CLEAR DATA), all actions are enabled. When a show is opened containing a setup cue, all actions are enabled.


ALL_OFF      Show Control Turn off all functions and outputs
type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [08H]
  message length: 7

ALL_OFF performs the actions specified by the ALL_OFF action flags (see SET ALL_OFF ACTIONS, above). Depending on the settings of the flags, all output channels are muted, all playback channels are stopped, all list clocks are stopped, and MIDI Note Off messages are sent on the MIDI OUT port to all channels with noteOffMask flags set in any open list. (Note: firmware prior to T228 and V665 always performs all actions.)

Operating status prior to ALL_OFF may be reestablished by a RESTORE command.

After an ALL_OFF command has been executed, subsequent ALL_OFF commands are ignored until a RESTORE command, or any other MSC type command, has been executed. This is required because ALL_OFF keeps a record of the operating state immediately before the ALL_OFF command is executed, so a subsequent RESTORE command can reestablish the state. A second ALL_OFF command, if executed, would overwrite the saved state with the "off" state following the first ALL_OFF.

There is a playback-only version of ALL_OFF, which uses the 'playback' command format byte [13H].


RESTORE    Reestablish operating status
type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [09H]
  message length: 7

RESTORE reestablishes the operating status to exactly as it was prior to ALL_OFF. Specifically, if output channels were muted by a preceding ALL_OFF command, they are unmuted, if playback channels were stopped, they are restarted at the stopped playback location, and if list clocks were stopped, they are restarted.

After a RESTORE command has been executed, subsequent RESTORE commands are ignored until an ALL_OFF command has been executed.

There is a playback-only version of RESTORE, which uses the 'playback' command format byte [13H].

 
SET RESET ACTIONS   Set up actions to occur with RESET command 
type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [06H 00H 15H ff gg]
  message length: 11
  ff: actions flags, first byte:
  bit  action
   0   set all gain points to zero
   1   clear all mutes and solos
   2   stop all playback
   3   clear all playback stop notifications, stop points and resume points
   4   set submaster zero & gain to defaults and zero all submasters 
   5   reopen current show /  if bit clear, open default show
   6   clear all delay settings
   7   always zero
  gg: actions flags, second byte:
  bit  action
   0   clear all EQs
   1   send ALL_NOTES_OFF messages as defined in the current show, before
       it is closed
  2..6 undefined, set to zero
   7 always zero

The SET RESET ACTIONS command sets or clears flags which determine what actions will be taken by the AudioBox on receipt of a MIDI Show Control RESET command. For all bits except bit 5, if the bit is set, the associated action is performed and if the bit is cleared the action is not performed by RESET. If bit 5 is set, RESET closes and reopens the current show. If bit 5 is cleared, RESET closes the current show and opens the default show.

The currently-set RESET action flags can be retrieved from the AudioBox using a GET DISK STATE command.

All actions are always enabled in firmware prior to T246 and V680. In a new AudioBox and following a "clear all user data" command (see CLEAR DATA), all actions are enabled (all flags set to 1).

This command sets only the RESET action flags in RAM. To save the new RESET action flags to disk so that they are restored every time the AudioBox is powered on, follow this command with a SAVE SETTINGS command. When a show is opened containing a setup cue, all actions are enabled.


RESET    Stop and reset the show
type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [0AH]
  message length: 7

RESET performs the actions specified by the RESET action flags (see SET RESET ACTIONS, above). Depending on the settings of the flags, RESET, zeros the gain matrix, clears any mute or solo settings, clears playback stop notifications and resume points, stops playback, clears submasters, zeros the delay on all channels, clears all EQs (by setting 'number of bands' to zero for all channels), sends MIDI Note Off messages, closes the current show and either reopens the current show or open the default show.


SET MIDI ECHO    Set MIDI-MIDI echo and SCSI-MIDI echo on or off
type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [06H  00H  18H  mm ss]
  mm: 01H enables MIDI-MIDI echo, 00H disables MIDI-MIDI echo
  ss: 
    bit 0, if set, enables SCSI-MIDI echo, if clear disables SCSI-MIDI echo 
    bit 1, if set, enables SHOW-MIDI filter, if clear disables SHOW-MIDI filter  
    bit 2, if set, enables STOP_NOTIFY-MIDI filter, 
           if clear disables STOP_NOTIFY-MIDI filter  
message length: 11

The SET MIDI ECHO command turns on and off MIDI-MIDI echo, SCSI-MIDI echo, the SHOW-MIDI filter and the STOP_NOTIFY-MIDI filter.

If MIDI-MIDI echo is on, all MIDI messages which arrive at the MIDI IN port get echoed to the MIDI OUT port.

If SCSI-MIDI echo is on, all MIDI commands (i.e. all AudioBox commands except the SCSI-only commands) which arrive at the external SCSI port get echoed to the MIDI OUT port. All AudioBox commands except the SCSI-only commands are formatted as MIDI messages, whether sent over MIDI or SCSI. This flag has no effect on an AB64.

When the SHOW-MIDI filter is on, local AudioBox commands generated by the show running on the AudioBox show controller are not sent to the MIDI OUT port (however, commands to external AudioBoxes and other equipment continue to be sent to the MIDI OUT port). A local AudioBox command is an AudioBox-formatted command that is addressed to the local AudioBox's current MIDI ID (if the command is an MSC command, the format byte is 10H (sound) or 13H (playback) or 7FH (all types)). If the SHOW-MIDI filter is off, all commands generated by the show running on the AudioBox show controller are sent to the MIDI OUT port.

When the STOP_NOTIFY-MIDI filter is on, local AudioBox commands generated by stop notifications (see SET STOP NOTIFICATION) are not sent to the MIDI OUT port (however, commands to external AudioBoxes and other equipment continue to be sent to the MIDI OUT port). A local AudioBox command is an AudioBox-formatted command that is addressed to the local AudioBox's current MIDI ID (if the command is an MSC command, the format byte is 10H (sound) or 13H (playback) or 7FH (all types)).

When an AudioBox is powered on, MIDI-MIDI echo, SCSI-MIDI echo, SHOW-MIDI filter and STOP_NOTIFY-MIDI filter are initially off. During initialization, the default show, if any (see SET DEFAULT SHOW), is automatically loaded into memory, which sets MIDI-MIDI echo, SCSI-MIDI echo, SHOW-MIDI filter and STOP_NOTIFY-MIDI filter according to the flags in the MIDIecho field in the show file header (see Show Control File Structure). Whenever a show file is opened (see OPEN CUE LIST), MIDI-MIDI echo, SCSI-MIDI echo, SHOW-MIDI filter and STOP_NOTIFY-MIDI filter are again set according to the MIDIecho field in the show file header of the show being opened.


MIDI Time Code Generator

The MIDI Time Code (MTC) Generator, when running, sends a constant stream of quarter frame MTC messages on the MIDI OUT port for synchronization with other equipment that uses MTC. It can also be connected to the list clocks of the show controller (see below). The MTC Generator is available in AudioBox firmware versions T246 and V680 and higher. Refer to the MTC addendum v4.2 to the MIDI specification document for details on MIDI Time Code, published by the MIDI Manufacturers Association.

When the MTC Generator is started, it immediately sends one full MTC message so that the receiving equipment can synchronize immediately without having to wait for eight quarter frame messages to arrive. A full MTC message is also sent when the MTC Generator is stopped. Sending a STOP CLOCK message to the MTC Generator when it is already stopped can be done to read the current value of the MTC Generator's clock over MIDI. The current value of the MTC Generator's clock is always available over SCSI using the GET SHOW command.

The following commands are used to control the MTC Generator on the AudioBox when sent to list 128 (which is an invalid list number in all other commands that have a list number parameter):

The MTC Generator must be enabled before it can be used, using an OPEN CUE PATH to list 128. The MTC Generator can be disabled by using a CLOSE CUE PATH command to list 128. Once enabled, the MTC Generator can be started, stopped, set and zeroed in the same way as ordinary list clocks. Specifically, sending MSC clock commands to list 128 will affect the MTC Generator only, while sending the MSC clock commands with the list unspecified (i.e. to "all open lists") will affect the MTC Generator as well as all open lists.

The MTC generator can also be connected internally to the show controller allowing synchronization of MTC-enabled list clocks to the MTC generator. See the SET MTC SOURCE command. (NOTE: An external MIDI connection - physically connecting MIDI OUT to MIDI IN - is not allowed. This would create a command feedback loop that would cause the AudioBox to malfunction. )


Real Time Clock Support

The AB64 has a built-in real time clock. The following information applies to models AB1616 and 1616HD.

Real time clock information is received by the AudioBox in the following MIDI-formatted messages. When received, these messages update the internal real time clock value, which can be used to trigger cues in a real-time list. Note that the AudioBox does not increment the internal real time clock value; the device supplying the real time clock information is responsible for sending messages regularly to maintain the correct time.

F0 7F 7F 02 7F 06 00 7F vv vv F7, vv vv = year

F0 7F 7F 02 7F 06 01 7F vv vv F7, vv vv = month

F0 7F 7F 02 7F 06 02 7F vv vv F7, vv vv = week

F0 7F 7F 02 7F 06 03 7F vv vv F7, vv vv = day of month

F0 7F 7F 02 7F 06 04 7F vv vv F7, vv vv = day of week (sunday=0)

F0 7F 7F 02 7F 06 05 7F vv vv F7, vv vv = hour

F0 7F 7F 02 7F 06 06 7F vv vv F7, vv vv = minute

F0 7F 7F 02 7F 06 07 7F vv vv F7, vv vv = second

F0 7F 7F 02 7F 06 09 7F vv vv F7, vv vv = day or night (night=0, day=1)

F0 7F 7F 02 7F 06 0A 7F vv vv F7, vv vv = standard or daylight time (standard=0, daylight=1)

F0 7F 7F 02 7F 06 40 7F vv vv F7, vv vv = countdown to sunrise in minutes

F0 7F 7F 02 7F 06 41 7F vv vv F7, vv vv = countup from sunrise in minutes

F0 7F 7F 02 7F 06 42 7F vv vv F7, vv vv = countdown to sunset in minutes

F0 7F 7F 02 7F 06 43 7F vv vv F7, vv vv = countup from sunset in minutes

F0 7F 7F 02 7F 06 44 7F vv vv F7, vv vv = switch standard or daylight time (standard=0, daylight=1)


Show File Structure & Implementation

Version 4 Show File Specification

Version 5 Show File Specification

The Show Control commands control the operation of the AudioBox internal show controller. The show controller runs cues programmed into lists which are stored in a binary file called a"show" file. Any number of show files can be stored on the AudioBox internal hard drive. Show files are created and edited using programs, such as ABEdit and ABShowMaker.

Limits, all show file versions:

1. Maximum of 127 show files stored on the AudioBox drive.

2. Maximum of 127 lists per show file.

3. Maximum number of lists simultaneously open:

Conventions

A pseudo C language syntax is used to specify data structures. Variable length structures are indicated by array syntax, when the count of array elements is left out, e.g. "struct abpath[ ];".

File structure version notes:

Versions 1 through 3 are no longer generated by control software, but will run on all AudioBoxes. See the Version 4 Show File Specification for versions 1 through 4.

version 1: Original release.
version 2: Added optional chunks, optChunkOffset field defined.
version 3: Added setup cues, setupPathOffset field defined.
version 4: Added real-time list support
version 5: Complete revision, removed 32K path size restriction

The file structure was completely redesigned in version 5.

Alignment and Byte Ordering

All words, longwords, and structures in the show file are word (16 bit) aligned.

All words and longwords use "big endian" byte-ordering (the most significant byte of a word or longword comes first as memory address increases).

Optional chunks

Optional chunks may be appended to the end of the formally defined structure of the show file. Optional chunks are defined by developers of software that work with AudioBox show files. The first longword of an optional chunk must be a chunk ID, which must be registered with Harmonic Functions (to avoid duplication). The second longword of the chunk must be the size of the chunk in bytes, not including the first and second longwords. The size of the chunk must be even. The structure of the chunk beyond the first two longwords is developer-defined.

The following structure IDs are currently in use and should not be used for optional chunk IDs:

'ABSH' (0x41425348) identifier for show header, version 4
'ASHO' (0x4153484F) identifier for show header, version 5
'ABPA' (0x41425041) identifier for path structure
'PTBL' (0x5054424C) identifier for path table (version 5 only)
'ACUE' (0x41435545) identifier for cue structure (version 5 only)

The following optional chunk IDs are currently in use:

'ABDS' (0x41424453) description chunk (version 4 list, cue and event strings)
'AFNS' (0x41464E53) audio file names chunk (version 4 audio file name list)
'EXPL' (0x4558504C) expansion level chunk (ABShowMaker)
'DFUS' (0x44465553) diffusion chunk (ABShowMaker)
'GRUP' (0x53454C45) groups chunk (ABShowMaker)
'UTF8' (0x55544638) unicode UTF8 strings (version 5 list, path, cue and audio file name strings)
 
The Description (ABDS) chunk (version 4) is defined as follows:
 
   The Description Chunk contains ascii information relating to ALL lists, cues, and 
   events in the showfile. All List Descriptions are stored first. The List Descriptions 
   are limited to 64 characters and can contain any ascii character 
   EXCEPT  \ / : ? " < > |
   The rest of the descriptions are ordered as they appear in the showfile. 
   Each cue description is followed by all of it's event descriptions.
 
   The overall structure of the chunk is defined as follows:
   struct abdescriptions {
      unsigned char ID; //constant 'ABDS' (0x41424453) to identify description chunk
      long chunksize; //size of description chunk including header (but not first two longwords)
      short listcount;  //# of list descriptions
      long othercount;  // # of descriptions for all others (cue and event)
      onedescription Listdescriptions[];  // variable length array of list descriptions
      onedescription CueEventdescriptions[];  // variable length array of list descriptions
      };
 
   The structure for each description string is as follows:
   struct onedescription{
      unsigned char lengthLo;     // lo-byte of string length
      unsigned char lengthHi;	    //hi-byte of string length
      char data[];	// variable length ascii string (empty strings have no data here)
	 }; 
 

The Audio File Name (AFNS) optional chunk (version 4) uses the same structures as the ABDS chunk. The ID field in the header is 'AFNS' (0x41464E53). The listcount field is unused. The othercount field contains the number of description structures in the chunk. There is one descrption for every event in the show that contains a selection number (LOAD, GO, RESUME, etc.). The order of descriptions in the chunk is the same as the order of events containing file numbers in the show. The description contains the audio file name associated with the corresponding event. Selection numbers in the event are updated at the time the show is transferred to the AudioBox by looking up the file name in the audio directory for the AudioBox.


Version 4 Show File Specification

Version 4 show files run on AudioBox models 1616HD, AB1616, and AB64. Version 5 show files run only on AB64 models with firmware A435 or higher.

Implementation Limits, version 4 files

1. Maximum of 2047 path structures per show file.

2. Maximum of 32768 bytes per path structure.

Version 4 Overall Show File Structure

AudioBox show file {
   show header
   path index
   path structure
   path structure
      ...
   optional chunk
   optional chunk
   ...
   }

Version 4 Show Header:

The show header contains a file ID for verifying the file type, a version number, a name string, a field for the number of path structures in the file, and some show global flags. If autoClockStart is on, after a RESET or ALL_OFF, a GO on any cue restarts the clock. If MIDIecho is on, all MIDI messages which show up at the MIDI IN port get echoed to the MIDI OUT port. If MIDIloopback is on, the AudioBox command input is connected to the output of the show control engine, if off the show control engine is just driving the MIDI OUT port. The optChunkOffset longword contains the offset, in bytes, from the beginning of the file to the beginning of the first optional chunk, if any. If there are no optional chunks, the optChunkOffset longword may be either zero, or point to the end of the file. The size of the show header is 588 bytes.

struct abshowhdr {
   long fileID;                  //constant 'ABSH' (0x41425348) to identify file 
   short vers;                   //0x0004: version number for this file structure
   char showname[32];            //show name text string
   short npaths;                 //number of path structures in the file
   unsigned char autoClockStart; //boolean, 0: off, non-zero: on
   unsigned char MIDIecho;       //flags: bit 0: MIDI-MIDI echo (see SET MIDI ECHO)
                                 //       bit 1: SCSI-MIDI echo
                                 //       bit 2: SHOW-MIDI filter
                                 //       bit 3: STOP_NOTIFY-MIDI filter
                                 //       all other bits reserved, set to zero
   unsigned char MIDIloopback;   //boolean, 0: off, non-zero: on
   unsigned char fps;            //frames per second, (24, 25, or 30)
   long optChunkOffset;             //offset from start of file to 1st optional chunk
   unsigned long setupPathOffset;     //offset in bytes from start of file to 
                                 //start of setup path structure (see Setup Cues) 
   unsigned char [24];           //reserved, set to zero
   struct ablist[128];           //list array (up to 128 lists in a show)
   }

Version 4 & 5 List structure:

The list structure consists of two 16-bit words, the first is the Note Off Mask, the second is a flag word.

Sequence Timing determines the source for the timing of the events within a cue (the sequence). List clock type is either stopwatch (internal timebase), or MTC (MIDI Time Code). Auto cue path sequencing, if on, tells the firmware to automatically load the next defined path (next higher path number) when the last cue of the current path is completed. The Clock Running flag, if on, sets the list clock running as soon as the list is opened. The 'List Opened when Show Opened' flag, if on, indicates that this list will be opened automatically when the show is opened. The firmware will scan the list array from the beginning, and open all the lists it finds having this flag set, up to the maximum number of open lists. (Note that when the AudioBox is powered on, it automatically opens the default show currently stored on the internal disk drive. See SET DEFAULT SHOW.) MTC source determines whether the source for the MTC is external or the internal MTC generator. See SET MTC SOURCE. List Clock Slave Mode determines whether the standby cue is adjusted when the clock jumps from one time to another. See SET SLAVE MODE

A real-time list contains cues that fire when the current real time clock value matches the real time specified in the cue. Each of the time fields can optionally be masked. In a real-time list, the list clock is ignored (and cannot be started), the sequence clock always runs in stopwatch mode, list clock slave mode is always off and auto cue path sequencing is always off, regardless of the settings of the other list flags.

The Note Off Mask is a set of sixteen flags, one for each MIDI channel (bit numbers equals MIDI channel number). If set, the AudioBox will send a MIDI ALL NOTES OFF command to that MIDI channel under the following conditions: when a STOP CLOCK command stops the list clock, when a CLOSE CUE LIST or CLOSE CUE PATH command closes the list, or when an ALL_OFF command is executed and the 'send ALL NOTES OFF' flag is set (see SET ALL_OFF ACTIONS).

struct ablist {
   unsigned short noteOffMask; //bit number = MIDI channel
                               //bit set = send Note Off on abnormal list stop
   unsigned short flags;       //list flags.
   };
 
   List Flags:
     Bit
      0: if 1, sequence timing is stopwatch (internal timebase)
      1: if 1 and bit 0 is 0, sequence timing is MTC
            if bit 0 and bit 1 are both 0,
               sequence timing is same as List Clock Type (bit 2), whatever it is
      2: List Clock Type: 0: stopwatch (internal), 1: MTC
      3: Auto cue path sequencing, 0: off, 1: on
      4: Clock Running  0: off, 1: on
      5: List Opened when Show Opened   0: off, 1: on
      6: MTC Source  0: external, 1: internal
      7: List Clock Slave Mode  0: off, 1: on
      8: Real-time List  0: normal list, 1: real-time list
 
      all other bits reserved, set to zero

Version 4 Path Index:

There are as many of these are there are path structures in the file (npaths). Each entry consists of the path identifier, which is a combination of list number and path number, and the offset from the start of the file to the path structure. The entries for a given list must be contiguous and in order of increasing path number.

struct abpathindex {
   unsigned short listnumber;   //list number for this path
   unsigned short pathnumber;   //path number
   unsigned long pathoffset;    //offset in bytes from start of file to 
                                //start of path structure 
   }

Version 4 Path chunk:

A path chunk contains one path structure, which consists of a header, a variable number (ncues) of cue structures, followed by an array real-time structures if the path is in a real-time list (one per cue), followed by a heap of event structures. (Because the event structures are variable-length, it is not actually an array, although array syntax is used below to define the structure.) The cue structures must be in order of increasing cue number. The event structures for a given cue are in a contiguous string, and in order of increasing delay. A path structure can be a maximum of 32768 bytes.

struct abpath {
   long structID;    //constant 'ABPA' (0x41425041)
   short ncues;      //number of cues in this path (must be > 0)
   short evHeapOfs;  //offset from base of path structure to base of event heap
   char desc[64];    //text field
   char unused[32];  //for future needs
   struct abcue[];   //variable length array of cue structures
   struct abrealtime[]; //variable length array of real-time structures
                        // (real-time lists only)
   struct abevent[]; //variable length heap of event structures for this path
   }

Version 4 Cue Structure:

A cue time of zero signifies a manual cue (unless the cue is in a real-time list). A non-zero cue time specifies the time in milliseconds when the cue is to be triggered by the list clock. (The maximum possible cue time is the maximum unsigned longword (2^31 - 1), which in milliseconds is about 1,193 hours.) If the cue is in a real-time list, the cue time is contained in a real-time structure for that cue; the cuetime longword is set to zero. The event1offset is the offset in bytes from the first event in the event heap to the first event for this cue. The first event in the first cue has event1offset set to zero. Bit 0 of the 'flags' word is the zero clock flag (list clock is zeroed when the cue is run). All other bits are reserved, and should be set to zero.

struct abcue {
   unsigned char hdr[12]; // zero this field: reserved for use by AudioBox
   long cuetime;         // 0 means manual cue
                         // non-zero: list clock time (milliseconds)
                         //    to trigger cue
                         // real time list cue: cue time is set by abrealtime
                         //    structure; set cuetime longword to zero
   long event1offset;    //offset from base of event heap to 1st event in cue
   unsigned short nevents; //number of events in this cue
   unsigned short flags; //cue flags
                         // bit 0: Zero Clock flag
                         // all other bits reserved, set to zero
   unsigned short cuenumber; //major number for this cue
   unsigned char sub1;   //1st subsection number for this cue
   unsigned char sub2;   //2nd subsection number for this cue
   unsigned char sub3;   //3rd subsection number for this cue
   unsigned char sub4;   //4th subsection number for this cue
   };
 

Version 4 & 5 Real-time Structure

The real-time structure is used in cues that are in a real-time list to specify a set of time values to be selectively matched against the current real-time clock values to determine when a cue is triggered. In a path that is part of a real-time list, the abcue array is followed by a abrealtime array. Each array has the same number of entries in the same order (i.e. the array index for a cue is the same as the array index for that cue's real-time structure). The real-time structure is 32 bytes in length.

Most of the fields in the real-time structure contain two digits of binary-coded decimal data. These fields are of type 'bcd' in the structure definition below. A 'bcd' field is one byte in length, with the tens digit occupying the upper four bits of the byte and the ones digit occupying the lower four bits of the byte. For example, '47' would be represented as the following binary byte: 0100 0111.

The second half of the structure contains field masks. These masks determine which bits are compared to determine when a cue is triggered. If a bit is set in a mask, that bit in both the corresponding time field in the first half of the structure and the current real-time clock is compared. Mask bits are usually set in blocks of four bits, which correspond to a decimal digit, but individual bits could be set. For example, setting just the least significant bit in a mask for a bcd digit would result in triggering on even or odd numbers.

See also the GET TIME command.

struct abrealtime {
   bcd year;             //year, '00' for year 2000 .. '99'
   bcd month;            //month, '01' .. '12' 
   bcd week;             //week of year, '01' .. '53'
   bcd day;              //day of month, '01 .. '31'
   bcd weekday;          //day of week, '01 .. 07' (Sunday = 1)
   bcd hour;             //hour, '00' .. '23'
   bcd minute;           //minute, '00' .. '59'
   bcd second;           //second , '00' .. '59'
   signed word sunrise;  //minutes before/after sunrise -1440..1440
   signed word sunset;   //minutes before/after sunset  -1440..1440
   byte daynight;        //night=0, day=1
   byte dst;             //standard=0, daylight savings time=1
   byte maskyear;        //mask- year
   byte maskmonth;       //mask- month
   byte maskweek;        //mask- week of year
   byte maskday;         //mask- day of month
   byte maskweekday;     //mask- day of week
   byte maskhour;        //mask- hour
   byte maskminute;      //mask- minute
   byte masksecond;      //mask- second
   word masksunrise;     //mask- minutes before/after sunrise
   word masksunset;      //mask- minutes before/after sunset
   byte maskdaynight;    //mask- day / night
   byte maskdst;         //mask- daylight savings time
   char unused[4];       //reserved, set to zero
   };
 

Version 4 Event Structure, V649 and earlier AudioBox firmware:

A single MIDI message with a length, delay value and a header. The structure must be word-aligned, which in the event of an even-length MIDI message requires adding a padding byte at the end of the message. The length field must contain the total number of bytes in the MIDI message (not including the padding byte, if any). The MIDI message must be 128 bytes or less. The delay field contains the delay in milliseconds from when cue GOes to when the MIDI message is sent to the MIDI OUT port and (optionally) to the AudioBox command queue.

struct abevent {
   unsigned char hdr[10]; // zero this field: reserved for use by AudioBox
   unsigned long evdelay; // delay (milliseconds) from when cue GOes to when
                          // event GOs
   unsigned short evsize; //number of bytes in the MIDI message
   unsigned char port;    //port number (unused)
   unsigned char msg[];   //variable length MIDI message
   unsigned char pad;     //if necessary to make structure an even size
   };
 

Version 4 Event Structure, V656 and later AudioBox firmware (including all AudioBox AB1616 firmware):

As of version V656 of the AudioBox firmware, one or more MIDI messages can be put into a single event. The structure must be word-aligned, which in the event of an even-length set of MIDI messages requires adding a padding byte at the end of the message. The length field must contain the total number of bytes in all of the MIDI messages (not including the padding byte, if any). Each individual MIDI message must be 128 bytes or less. The only limit on the size of the event structure is the 32K limit on the path structure that contains the event. The delay field contains the delay in milliseconds from when cue GOes to when all the MIDI messages are sent to the MIDI OUT port and (optionally) to the AudioBox command queue.

struct abevent {
   unsigned char hdr[10]; // zero this field: reserved for use by AudioBox
   unsigned long evdelay; // delay (milliseconds) from when cue GOes to when
                          // event GOs
   unsigned short evsize; //number of bytes in the MIDI message
   unsigned char port;    //port number (unused)
   unsigned char msg[];   //variable length string of MIDI messages
   unsigned char pad;     //if necessary to make structure an even size
   };


Version 5 Show File Specification

Version 5 show files run only on AB64 models with firmware A440 or higher.

The format of the show file is completely revised in version 5. The primary objective in the redesign was the elimination of the 32K limit on path size. This requires the use of dynamically allocated RAM memory in the AB64 show controller, and requires a show file design in which all cue information is contiguous in the file. Thus there is one event heap attached to the end of every cue structure, rather than one larger event heap per path, containing all the events for all the cues in the path. The file is structured to facilitate reading paths and cues randomly from disk into dynamically allocated memory. Thus the path structure includes a cue index. Also, path and cue structures are aligned on disk block (512 byte) boundaries. This space inefficiency is balanced by denser event packing; version 4 and version 5 files for the same show end up being about the same size.

Also eliminated is the requirement that events begin on even addresses. The version 5 show file format was also designed with the readability of a hex dump of the binary file in mind. For example, the use of 512-byte alignment for all major structures makes the show file "page oriented" when viewing in binary. Also, many of the inner structures (e.g. path index and cue index) are sized in multiples of 16 bytes to facilitate readability.

Implementation Limits, version 5 files

  1. No maximum number of path structures per show file.
  2. No maximum path structure size.
  3. No maximum number of lists per show

Note: There is a maximum amount of dynamically-allocated memory available in the AB64 for paths and cues. This memory allocation is at least 1 MB, which is more than sufficient for any practical show. Only structures for live cues (and releated path structures) must be in memory at any time.

Strings in Version 5 Show Files:

All text strings in a version 5 show file use Unicode UTF8 (rather then ASCII) encoding and are contained in one chunk with chunk ID 'UTF8'. (Version 5 show files do not contain 'ABDS' or 'AFNS' chunks.) The use of Unicode string encoding provides support for user text in any language and eliminates complex and error-prone string conversions. Comment strings for events, which in practise have been almost never used by show programmers, have been eliminated in version 5. UTF8 strings in the show file are null-terminated. Version 5 list, path and cue structures have string pointer fields to directly connect the structure to its associated string in the UTF8 chunk. Because of the string pointer fields, strings for lists, paths and cues can be placed in any order in the UTF8 chunk. Audio file names are stored sequentially in the UTF8 chunk, concatenated in the order that the audio file names appear in the show. A string pointer field in the show header points to the first audio file name string in the chunk, therefore the block of concatenated audio file name strings can be placed in any location in the chunk. A string pointer field, as contained in version 5 show header, list, path and cue structures, contains the offset in bytes from the beginning of the UTF8 chunk to the first byte of the associated UTF8 string.

Version 5 Overall Show File Structure

AudioBox show file {
   show header
   path table
   setup cue structure
   path structure
      cue structure
      cue structure
       ...
      cue structure
   path structure
      cue structure
      cue structure
       ...
      cue structure
    ...
   optional chunk
   optional chunk
   ...
   }

Version 5 Show Header:

The show header contains a file ID for verifying the file type, the version number (5), the number of list and path structures in the file, and some show global flags. The file ID is changed with version 5 to ensure that earlier firmware does not attempt to load these files. The optChunkOffset longword contains the offset, in bytes, from the beginning of the file to the beginning of the first optional chunk, if any. If there are no optional chunks, the optChunkOffset longword is zero. The size of the show header is 512 bytes.

struct abshowhdrv5 {
   long fileID;                  //constant 'ASHO' (0x4153484F) to identify file 
   short vers;                   //0x0005: version number for this file structure
   char unused1[2];              //reserved, zero this field
   long nlists;                  //number of lists in the file
   long npaths;                  //number of path structures in file
   char autoClockStart;          //boolean, 0: off, non-zero: on
   char MIDIecho;                //echo flags (see SET MIDI ECHO)
   char MIDIloopback;            //boolean, 0: off, non-zero: on
   char fps;                     //frames per second, (24, 25, or 30)
   long optChunkOffset;          //offset from start of file to 1st optional chunk
   long setupCueOffset;          //file address (offset) of setup cue structure (multiple of 512)
   long setupCueSize;            //size of setup cue structure (multiple of 512)
   long pathTableSize;           //size of the path table structure (multiple of 512)
   long utf8ChunkOffset;          //offset from start of file to 'UTF8' chunk
   long utf8ChunkSize;           //size of 'UTF8' chunk in bytes
   long audioFileNameOffset;     //offset from start of 'UTF8' chunk to first audio file name string
   long submasterNames[32];      //offset in 'UTF8' chunk to submaster name strings
   char unused2[336];            //reserved, zero this field
   }

If autoClockStart is on, after a RESET or ALL_OFF, a GO on any cue restarts the clock. If MIDIecho is on, all MIDI messages which show up at the MIDI IN port get echoed to the MIDI OUT port. If MIDIloopback is on, the output of the show control engine is connected to the AudioBox command input; if off the show control engine is just driving the MIDI OUT port. Normally, MIDIloopback is turned on.

Version 5 Path Table:

The path table immediately follows the show header (at file address 512). The path table is variable in size and padded with zeros up to an even number of disk blocks (512 bytes). The path table consists primarily of an array of path index structures, one for each path in the file and sorted by list and path. (e.g., all path index structures for list 1 are in path number order and located before all path index structures for list 2, etc.).

struct abpathtablev5 {
   long size;                    //size of path table structure, multiple of 512
   long unused1;                 //used by AB64, zero this field
   long structID;                //constant 'PTBL' (0x5054424C) to identify structure
   long unused2;                 //reserved, zero this field
   struct abpathindexv5 {
      short listnumber;           //list number
      short pathnumber;           //path number
      char openPath;              //flag: open path when show opened (list flags bit 5 & first path in list)
      char unused1[3];            //reserved, zero this field
      long address;               //file address (offset) of path structure (multiple of 512)
      long size;                  //size of path structure (multiple of 512)
      long listStringOffset;      //offset in 'UTF8' chunk to list string, 0 if none
      long pathStringOffset;      //offset in 'UTF8' chunk to path string, 0 if none
      char unused2[8];            //reserved, zero this field	
      } [npaths];                 //as many as there are path structures in the file
   }

Version 5 Path structure:

The path structure is varaible in size and padded with zeros up to an even number of disk blocks (512 bytes). Following a header, the path structure contains an array of cue index structures, one for each cue in the path, sorted by cue number. If the path is in a real-time list, an array of realtime structures follows the cue index array, in the same order as the cue index structures (equivalently, a cue index and its corresponding real-time structure both have the same array index).

struct abpathv5 {
   long size;                    //size of path structure, multiple of 512
   long unused1;                 //used by AB64, zero this field
   long structID;                //constant 'ABPA' (0x41425041)
   long unused2;                 //reserved, zero this field
   short listnumber;             //list number
   short pathnumber;             //path number
   long ncues;                   //number of cues in this path (must be > 0)
   long listFlags;               //list flags (duplicated in all paths in list)
   long listNoteOffMask;         //note off mask (duplicated in all paths in list)
   char unused3[32];             //reserved, zero this field
   struct abCueIndex {           //cue index array
      long cuenumber;            //major cue number (1..65535)
      unsigned char subnumber1;  //first sub number (0..255)
      unsigned char subnumber2;  //second sub number (0..255)
      unsigned char subnumber3;  //third sub number (0..255)
      unsigned char subnumber4;  //fourth sub number (0..255)
      long address;              //file address of cue structure (multiple of 512)
      long size;                 //size of cue structure (multiple of 512)
      long cueStringOffset;      //offset in 'UTF8' chunk to cue string, 0 if none
      char unused4[12];          //reserved, zero this field
      } [ncues];                 //as many as there are cue structures in the path
   struct abrealtime[ncues];     //real time structure array ONLY if in a real-time list
   }

The real-time structure is identical in show file versions 4 and 5.

The definitions of the list flags word and the note off mask (used in the 'abpath' structure above) are identical to the definitions used in version 4.

Version 5 Cue Structure:

The cue structure is variable in size and padded with zeros up to an even number of disk blocks (512 bytes). The cue structure contains all of the event structures in the cue.

struct abCue {
   long size;                    //size of cue structure, multiple of 512
   long unused1;                 //used by AB64, zero this field
   long structID;                //constant 'ACUE' (0x41435545)
   long unused2;                 //reserved, zero this field
   long cuenumber;               //major cue number (1..65535)
   unsigned char subnumber1;     //first sub number (0..255)
   unsigned char subnumber2;     //second sub number (0..255)
   unsigned char subnumber3;     //third sub number (0..255)
   unsigned char subnumber4;     //fourth sub number (0..255)
   long cuetime;                 // 0 means manual cue (or real time list cue)
                                 // non-zero: list clock time (milliseconds)
                                 //    to trigger cue
   long flags;                   //cue flags
                                 // bit 0: Zero Clock flag
                                 // bit 1: Clear Live Cues flag
                                 // all other bits reserved, set to zero
   long nevents;                 //number of events in this cue
   char unused3[28];             //reserved, zero this field
   struct abEvent[nevents];      //concatenation of all events for this cue, zero terminated
   };
 

If the cue is not in a real-time list, a cue time of zero signifies a manual cue. A non-zero cue time specifies the time in milliseconds when the cue is to be triggered by the list clock. (The maximum possible cue time is the number of milliseconds in the maximum signed longword (2^31 - 1), which is about 1,193 hours.)

If the cue is in a real-time list, the cue time is contained in a real-time structure for that cue in the path structure; the cuetime longword is set to zero.

Bit 0 of the 'flags' word is the zero clock flag (list clock is zeroed when the cue is run). Bit 1 of the 'flags' word is the Clear Live Cues flag. If this bit is set, any cues in the same list that are still live (cue not completed, events pending) when this cue goes are cleared. All other bits are reserved, and should be set to zero.

Version 5 Event Structure

The version 5 event structure is simply a single MIDI message prefixed with a length and a delay value. There are no alignment restrictions; event structures are concatenated without padding. In a cue, the event heap (sequence of concatenated event structures) is terminated with a zero byte. The length field contains the total number of bytes in the MIDI command (it does not include the first four bytes of the structure: the length and delay bytes). The MIDI command must be 128 bytes or less in length. The event delay is the interval in milliseconds from when the cue GOes to when the MIDI command is sent to the MIDI OUT port and (optionally) to the AudioBox command queue. The event delay is a 24-bit unsigned value stored in three consecutive bytes, most significant byte first, 8 bits per byte. (The maximum possible event delay is the number of milliseconds in the maximum unsigned 24 bit word (2^24 - 1), which is about 4 hours 39 minutes.)

struct abEvent {
   unsigned char MIDIlength;          //number of bytes in the MIDI string
   unsigned char evDelay1;            //event delay, msb
   unsigned char evDelay2;            //event delay, middle byte
   unsigned char evDelay3;            //event delay, lsb
   unsigned char MIDIcmd[MIDIlength]; //variable length MIDI command string
   };
 

Setup Cues:

A setup cue is a cue that is automatically run when a show is opened. Setup cues are available in firmware versions T245 and higher (AB1616), V678 and higher (1616HD), and all versions of AB64 AudioBox firmware.

The following rules apply to the version 4 show file format:

  1. A setup cue is contained in a setup path. The structure of a setup path is the same as a normal path.
  2. A setup path contains exactly one cue, the setup cue. (The 'ncues' field in the path structure is set to one.) The structure of a setup cue is the same as a normal cue.
  3. The setup path is not contained in a list and does not appear in the path index. It is not counted in the ' npaths' field in the show header.
  4. If a show file contains a setup cue, the show header field 'setupPathOffset' contains the offset in bytes from the beginning of the file to the setup path. If a show file does not contain a setup cue, 'setupPathOffset' is zero.
  5. A setup cue can be any size (up to the path size limit).

The following rules apply to the version 5 show file format:

  1. A setup cue is contained in a normal cue structure, abCue. (There is no setup path.) The setup cue is located in the file immediately after the path table.
  2. If a show file contains a setup cue, the show header field 'setupCueOffset' contains the offset in bytes from the beginning of the file to the setup cue. If a show file does not contain a setup cue, 'setupCueOffset' is zero. The 'setupCueSize' field contains the size of the setupCue, including padding.
  3. A setup cue can be any size.

The following rules apply to all show file formats:

  1. The cue number (cuenumber, sub1, sub2, sub3, sub4) for a setup cue must be set to zero.
  2. The time field (cuetime) for a setup cue must be set to zero.
  3. The event delay field (evdelay) in all events in a setup cue must be set to zero.
  4. When a show file is opened, if a setup cue is present, all of the device settings (except default show) will be set to their default values, then the setup cue is run. The default values for the device settings are defined in the CLEAR DATA command ('clear all user data except default show' option).
  5. Unlike normal cues, the events (MIDI commands) in a setup cue are not sent to the MIDI OUT port. This prevents other AudioBoxes that might be connected via MIDI from receiving setup information that is only intended for the AudioBox running the setup cue.
  6. Unlike normal cues, the MIDIloopback flag is ignored. The events are always sent to the AudioBox command input, even if the MIDIloopback is off.
  7. An event in a setup cue can contain any valid AudioBox command, but it is intended that it will contain primarily "device settings" commands:


Section 7: Audio Playback / Record

Commands

There are five MSC commands used to control audio playback: GO, LOAD, STOP, RESUME and DISABLE CHANNEL (CLOSE CUE LIST). These commands may also be used as show control commands to control cues. The command format byte in the MSC command distinguishes show control from audio playback commands. All of the audio playback commands in this section use a 13H (playback) or 11H (music) as the command format byte, whereas all other MIDI Show Control (MSC) commands used with the AudioBox use 10H (sound) as the command format byte. Note that the MSC All-types command format byte (7FH) will not select audio playback commands; if the MSC All-types command format byte is used the command will be interpreted by the AudioBox as a sound command.

Playback Channel

When used as an audio playback command, the MSC "cue list" string is used to define the playback channel and the MSC "cue number" string is used to specify the playback location. (MSC cue path is not used.) For example, a GO command with a cue list of "11" and a cue number of "10" will play back into matrix channel 11 (zero-based channel numbering) selection number 10 on the disk drive, starting at the beginning of the selection.

For the AudioBox 1616HD, the disk playback channels are numbered 08H through 0FH; these are always internally connected directly to matrix input channels 08H through 0FH. For the AudioBox AB1616, the disk playback channels are numbered 00H through 0FH; channels 00H through 07H may be connected to matrix input channels 00H through 07H depending on the input channel mode (see SET INPUT CHANNEL MODE) and disk playback channels 08H through 0FH are always internally connected directly to matrix input channels 08H through 0FH.

Playback Location

   selection.minutes.seconds.samples

The playback location (MSC cue number) specifies the exact point where playback will start, stop or resume. As a minimum, the playback location string specifies the selection number (1..maximum selection number). It can optionally have subdivisions, separated by periods, which can be used to specify any location point in the selection. The subdivisions express minutes, seconds and samples, in that order. Leading zeros are accepted. For example, the playback location "11.01.23.1788" refers to the point one minute, 23 seconds, and 1788 samples into selection number 11. Unspecified trailing subdivisions are assumed to be zero, e.g. "11.1.23" means exactly one minute and 23 seconds into selection number 11.

Selections may be stored to disk in any order. Selections may also be erased from disk in any order. Thus there can be blank selection numbers between selection numbers that contain audio.

The maximum length for an audio selection is 12 hours, 25 minutes, 39 seconds (4.295 GB).

Maximum Selection Number

The maximum selection number is 511 for model 1616HD.

The maximum selection number is 8063 for models AB64 and AB1616.

Invalid Location

A playback location is invalid if it specifies a selection number that is empty, a location 256 samples or less before the end of a selection or a location beyond the end of a selection. An empty selection is one that has never been used or has been erased. Note that the location specified may not span selection boundaries. Firmware prior to T248 and V682 did allow locations to span selection boundaries. This feature is no longer supported.

Playback States

A playback channel is always in one of three states: 'playing', 'stopped' or 'disabled'. The current playback state is available through the QUERY PLAYBACK and GET PLAYBACK and GET PLAYBACK EN commands.

A channel that is in 'playing' state is actively playing back audio from the disk. A playback channel that is 'stopped' or 'disabled' is silent.

A channel that is not 'disabled' has a current playback location (i.e. it is playing or is stopped at a specific location) If 'stopped', a channel will play back when a null GO or GO CHANNEL SET command is sent to the AudioBox. A channel becomes 'stopped' either by having a valid LOAD command sent on the channel, or by being stopped, manually or automatically, when playback was active on the channel.

A channel that is 'disabled' has no current playback location and will not play back when a null GO or GO CHANNEL SET command is sent. When the AudioBox is powered on, all playback channels are initially in a 'disabled' state. Thereafter, a channel becomes 'disabled' by playing to the end of a selection, or by having a DISABLE CHANNEL command sent for that channel. A non-null GO command sets a playback location and starts playback, regardless of the channel's prior state.

Playback will always stop at the end of a selection, which will set the playback state to 'disabled'. An automatic stop point (one per channel) may optionally be placed at any location using a specific form of the STOP command. When an automatic stop point is reached, the playback state goes to 'stopped'.

Multi-Channel Record and Playback

The AB64 is always in one of six audio modes: single channel file playback, multi-channel file playback, record enabled-inputs, recording in progress-inputs, record enabled-outputs and recording in progress-outputs. These modes are mutually-exclusive. Single channel file playback is the most commonly-used and most versatile playback mode (this is the mode that AB1616 and 1616HD models always operate in). Recording more than one channel on the AB64 generates a multi-channel file. The multi-channel file playback mode is provided so that multi-channel audio files may be played back immediately after having been recorded, primarily for verification purposes. Only one multi-channel file may be played back at a time, but the file can contain up to 64 channels. A mutli-channel file recorded on the AB64 may be split into a set of single channel files, which then may be played back in single channel file playback mode in any combination like other audio selections.

There are two commands specifically for audio recording, SETUP RECORD and ENABLE RECORD CHANNEL. (AB64 only). Either a set of input channels (post source mix, pre-matrix input level) or a set of output channels (post matrix output level) may be recorded (but not both simultaneously). SETUP RECORD switches the AB64 into one of the record enabled modes. This stops all playback in progress (all playback channels go to the 'disabled' playback state). Channels to be recorded are enabled by sending a set of ENABLE RECORD CHANNEL commands. Recording starts when a null GO is received and stops when a null STOP command is received. A null STOP switches the AB64 back into single channel file playback mode. The LOAD MULTICHANNEL command switches the AB64 into multi-channel playback mode, and stops all playback in progress. Multi-channel playback starts when a null GO is received and stops when a null STOP command is received or when the end of the file is reached.

The audio mode is available in the data returned by the GET DISK STATE EN command. The audio mode byte is encoded as follows:

bit encoding
 0  0: single,  1: multi       (applies to playback only)
 1  0: input,   1: output      (applies to record only)
 2  0: enable,  1: in progress (applies to record only)
 3  0: playback,1: record
 
valid audio modes:
0 - single channel file playback
1 - multi-channel file playback
8 - record enabled, inputs
10 - record enabled, outputs 
12 - recording in progress, inputs 
14 - recording in progress, outputs 

A null STOP command sent at any time will switch the AB64 back to single channel file playback mode.

LOAD    Set playback location, single-channel files
  type: MSC  
  [cmd format byte]: [13H] (playback)
  [cmd/data field]:  [05H loc 00H pch]
  loc: playback location string
  00H: delimiter
  pch: playback channel string
message length: 10..31
 

LOAD sets a location in a single-channel file for audio playback and pre-fills the playback buffers. Playback location is specified as a string of 1, 2, 3 or 4 numbers separated by periods, where the numbers specify selection (1..maximum selection number), minutes (0..65535), seconds (0..65535) and samples (0..65535), in that order. For example, the string "25.13.46.1903" locates a point 13 minutes, 46 seconds and 1903 samples beyond the beginning of selection 25. Playback channel is specified as a number in the range 0..63 (AB64), 0..15 (AB1616) or 8..15 (1616HD) (zero-based channel numbering). Neither the location string nor the playback channel string are optional. Following a valid LOAD command, the new state of the playback channel is 'stopped'. A LOAD command specifying an invalid location is rejected.

If a null GO command or a GO CHANNEL SET command is sent after a series of LOAD commands on a set of playback channels, the audio playback will be synchronized between all the channels in the set. A series of non-null GO commands could be used to start the same set of audio selections on the same set of playback channels, but the playback would not be synchronized. There is a delay of up to 400 milliseconds (AudioBox 1616HD) or 1 second (AudioBox AB1616) from the time that the last LOAD command is received before a subsequent null GO or GO CHANNEL SET command can be executed, starting audio playback. This delay is required to pre-fill the audio buffers from the disk drive. If playback of a set of synchronized audio channels must start precisely (without a delay) when the null GO or GO CHANNEL SET command is sent, send all LOAD commands at least 400 milliseconds (AudioBox 1616HD) or 1 second (AudioBox AB1616) before the null GO or GO CHANNEL SET is sent.

The LOAD command is disabled when recording or multi-channel playback is in progress. A null STOP command sent at any time will switch the AB64 back to single channel file playback mode, enabling this command.


GO               Start playback
  type: MSC  
  [cmd format byte]: [13H] (playback)
  [cmd/data field]:  [01H loc 00H pch] or [01H loc] or [01H 30H 00H pch]
                     or [01H 30H] or [01H]
  loc: playback location string
  00H: delimiter
  pch: playback channel string
  message length: 7..31
 

GO (with a command format byte of 13H) starts audio playback on one or more single-channel files. There are four forms of the GO command:

When a GO command is issued with a non-null location, there will be a short delay, up to approximately 400 milliseconds (AudioBox 1616HD) or 1 second (AudioBox AB1616) (depending on how many channels are being played back) before the playback starts. This delay is required to pre-fill the audio buffers from the disk drive. If a LOAD command, or a series of LOAD commands, has been issued at least 400 milliseconds (AudioBox 1616HD) or 1 second (AudioBox AB1616) prior to when a null GO command is issued, the playback will begin as soon as the null GO command is received, i.e. without audible delay. If the null GO command is sent before the LOAD commands have completed preloading the audio buffers, execution of the null GO command is delayed until the audio buffers are preloaded. A GO command specifying an invalid location is rejected.

If playback is started on an open audio channel at a location where there is not silence (zeros), an audible click may result. This is due to the abrupt transition from zeros to the sample at the initial playback location. The AudioBox does not attempt to automatically smooth out the transition at the beginning and ending of playback (which in some cases would interfere with the desired playback behavior). Start and stop clicks may be avoided by starting and stopping playback at silent points in the selection, or by using gain ramps to fade audio in after playback startup or to fade audio out before playback stop.

The GO command is disabled when recording or multi-channel playback is in progress. A null STOP command sent at any time will switch the AB64 back to single channel file playback mode, enabling this command.


GO CHANNEL SET        Start playback on a specified set of channels
  type: MSC  
  [cmd format byte]: [13H] (playback)
  [cmd/data field]:  [06H  00H  xx  yy  zz]
  xx yy zz: channel flags (set to 1 to start playback):
     xx: bit 0: playback channel 0 (AudioBox AB1616 only)
     xx: bit 1: playback channel 1 (AudioBox AB1616 only)
     xx: bit 2: playback channel 2 (AudioBox AB1616 only)
     xx: bit 3: playback channel 3 (AudioBox AB1616 only)
     xx: bit 4: playback channel 4 (AudioBox AB1616 only)
     xx: bit 5: playback channel 5 (AudioBox AB1616 only)
     xx: bit 6: playback channel 6 (UIOA version and AudioBox AB1616 only)
 
     yy: bit 0: playback channel 7 (UIOA version and AudioBox AB1616 only)
     yy: bit 1: playback channel 8
     yy: bit 2: playback channel 9
     yy: bit 3: playback channel 10
     yy: bit 4: playback channel 11
     yy: bit 5: playback channel 12
     yy: bit 6: playback channel 13
 
     zz: bit 0: playback channel 14
     zz: bit 1: playback channel 15
     zz: bit 2: unused, always 0
     zz: bit 3: unused, always 0
     zz: bit 4: unused, always 0
     zz: bit 5: unused, always 0
     zz: bit 6: unused, always 0
 
message length: 11

GO CHANNEL SET starts synchronous multiple channel playback of a set of single-channel files. It is equivalent to a null GO, except that it can act on an arbitrary subset of playback channels rather than all stopped playback channels. Note that it is based on an MSC SET command, not on the MSC GO command. If a channel is disabled (see DISABLE CHANNEL), a GO CHANNEL SET command will not start playback of that channel into the matrix.

If a LOAD command, or a series of LOAD commands, has been issued at least 400 milliseconds (AudioBox 1616HD) or 1 second (AudioBox AB1616) prior to when a GO CHANNEL SET command is issued, the playback will begin as soon as the GO CHANNEL SET command is received, i.e. without audible delay. If the GO CHANNEL SET command is sent before the LOAD commands have completed preloading the audio buffers, execution of the GO CHANNEL SET command is delayed until the audio buffers are preloaded.

The GO CHANNEL SET command is disabled when recording is in progress.

GO CHANNEL SET EXT   Start playback on a specified set of channels 
                       (AB64 only)
  type: sysex  
  [cmd/data field]:  [03H f0 f1 f2 f3 f4 f5 f6 f7 f8 f9]
  f0 - f9: channel flags (set to 1 to start playback):
  f0 contains flags for playback channels 0 - 6:
     f0: bit 0: playback channel 0
     f0: bit 1: playback channel 1
     f0: bit 2: playback channel 2
     f0: bit 3: playback channel 3
     f0: bit 4: playback channel 4
     f0: bit 5: playback channel 5
     f0: bit 6: playback channel 6
  f1 contains flags for playback channels 7 - 13
  f2 contains flags for playback channels 14 - 20
  f3 contains flags for playback channels 21 - 27
  f4 contains flags for playback channels 28 - 34
  f5 contains flags for playback channels 35 - 41
  f6 contains flags for playback channels 42 - 48
  f7 contains flags for playback channels 49 - 55
  f8 contains flags for playback channels 56 - 62
  f9 contains flag for playback channel 63
message length: 19

GO CHANNEL SET EXT starts synchronous multiple channel playback of single-channel files on the AB64. It is equivalent to a null GO, except that it can act on an arbitrary subset of playback channels rather than all stopped playback channels. If a channel is disabled (see DISABLE CHANNEL), a GO CHANNEL SET EXT command will not start playback of that channel into the matrix.

If a LOAD command, or a series of LOAD commands, has been issued at least 1 second prior to when a GO CHANNEL SET EXT command is issued, the playback will begin as soon as the GO CHANNEL SET EXT command is received, i.e. without audible delay. If the GO CHANNEL SET EXT command is sent before the LOAD commands have completed preloading the audio buffers, execution of the GO CHANNEL SET EXT command is delayed until the audio buffers are preloaded.

The GO CHANNEL SET EXT command is disabled when recording or multi-channel playback is in progress. A null STOP command sent at any time will switch the AB64 back to single channel file playback mode, enabling this command.

SETUP RECORD   Set up audio record (AB64 only)
  type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [06H 0AH ss ss io]
  ss ss: selection number  (lsb first, 14 bit value, 7 bits per byte)
  io: source flag: 0: record inputs, 1: record outputs
message length: 11
 

SETUP RECORD begins the process of recording audio on the AB64. It puts the AB64 into 'record enabled' audio mode (see GET DISK STATE EN), with all channels record disabled. Any playback in progress is stopped and all playback channels go to the 'disabled' playback state. Either a set of input channels (post source mix, pre-matrix input level) or a set of output channels (post matrix output level) may be recorded (but not both simultaneously), as specified by the 'io' command byte. After this command is sent, a set of ENABLE RECORD CHANNEL commands is sent to enable the channels to be recorded. Recording begins when a null GO command is received. The signals recorded are the same as the signals driving the VUs; therefore the input / output VUs serve as record level indicators. The set of enabled channels are written to an interleaved file at the specified selection number until a null STOP command is received, at which point the directory is updated with the newly-recorded file. The control program should also set the file data for the file, see SET FILENDATA EN. Multi-channel, interleaved files can be played back using the LOAD MULTICHANNEL command. Multi-channel, interleaved files cannot be played back using the standard GO or GO CHANNEL SET EXT commands.

ENABLE RECORD CHANNEL   Enable a channel for recording (AB64 only)
  type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [06H 00H 21H cc 01H/00H]
  cc: channel number  0..63
  01H: enable channel, 00H: disable channel
message length: 11

ENABLE RECORD CHANNEL enables recording on the specified channels. The AB64 must be in 'record enable' mode by having received a SET UP RECORD command. This command sets the 'record' flag for the channel in the structure returned by GET PLAYBACK EN. Recording begins when a null GO command is received (if no channels are enabled, the null GO is ignored). The signals recorded are the same as the signals driving the VUs; therefore the input / output VUs serve as record level indicators. The set of enabled channels are written to an interleaved file until a null STOP command is received, at which point the directory is updated with the newly-recorded file. Multi-channel, interleaved files can be played back using the LOAD MULTICHANNEL command. Multi-channel, interleaved files cannot be played back using the standard GO or GO CHANNEL SET EXT commands.

LOAD MULTICHANNEL   Start playback of recorded multi-channel audio file (AB64 only)
type: MSC  
  [cmd format byte]: [11H] (music)
  [cmd/data field]:  [05H loc 00H pch]
  loc: playback location string
  00H: delimiter
  pch: playback channel string
  message length: 7..31

LOAD MULTICHANNEL loads a multi-channel file for playback. Only one multi-channel file may be played back at a time, but the file may have up to 64 channels. The LOAD MULTICHANNEL command switches the AB64 into multi-channel playback mode (see GET DISK STATE EN), and stops all playback in progress (all playback channels go to the 'stopped' playback state). LOAD MULTICHANNEL uses the same command syntax as the standard LOAD command except with a command format byte of 11H rather than 13H. Multi-channel file playback begins when a null GO command is received and stops when a null STOP command is received or when the file reaches the end.

Both the playback location string and the playback channel string must be specified for the command to be valid. Playback start location is specified as a string of 1, 2, 3 or 4 numbers separated by periods, where the numbers specify selection (1..maximum selection number), minutes (0..65535), seconds (0..65535) and samples (0..65535), in that order. Playback channel is specified as a number in the range range 0..63 (zero-based channel numbering). The first channel of a multi-channel sound file will play back on the matrix input channel specified; subsequent channels in the file are mapped onto sequential matrix input channels.


STOP                Stop playback / record, sets stop points
  type: MSC  
  [cmd format byte]: [13H] (playback)
  [cmd/data field]:  [02H loc 00H pch] or [02H loc] or [02H 30H 00H pch]
                     or [02H 30H] or [02H]
  loc: playback location string
  00H: delimiter
  pch: playback channel string
  message length: 7..31

STOP terminates audio playback and record. A STOP command may stop playback or record right away, or may set a location (called a stop point) where playback will stop automatically. There are four forms of the STOP command:

The first two forms of the STOP command (non-null STOP) set automatic playback stop locations. Playback stops when the current playback location advances to the automatic stop location. One automatic stop location may be set per playback channel; if an automatic stop location is currently set on a channel, another valid non-null STOP command for that channel will clear the existing stop point and set a new one. A STOP command specifying an invalid location is rejected. An automatic stop located at the very beginning of a selection has no effect.

Automatic stop locations remain in effect after playback stops. (Note that in firmware prior to T248 and V682 automatic stops were cleared when playback stopped. This is no longer the case, simplifying the programming of recurring audio loops.) Automatic stop locations can be cleared with a DISABLE CHANNEL command or a RESET command.

The last two forms of the STOP command (null STOP) stop playback immediately.

After an automatic or manual stop, a subsequent null GO command will restart the playback at the point where the playback stopped, unless the playback position is at the end of a selection.

NOTE that if a RESUME command has been sent, playback will resume at a new location immediately after a stop. See the RESUME command below.

If playback is stopped on an open audio channel at a location where there is not silence (zeros), an audible click may result. This is due to the abrupt transition from the sample at the stop location to zeros. The AudioBox does not attempt to automatically smooth out the transition at the beginning and ending of playback (which in some cases would interfere with the desired playback behavior). Start and stop clicks may be avoided by starting and stopping playback at silent points in the selection, or by using gain ramps to fade audio in after playback startup or to fade audio out before playback stop.

RESUME        Set playback resume (jump-to) location
  type: MSC  
  [cmd format byte]: [13H] (playback)
  [cmd/data field]:  [03H loc 00H pch]
  loc: playback location string
  00H: delimiter
  pch: playback channel string
  message length: 10..31

RESUME sets a location (for a specified channel) where playback will resume automatically (i.e. where playback will jump to) immediately following the next stop on that channel. Playback location (MSC cue number) is specified as a string of 1, 2, 3 or 4 numbers separated by periods, where the numbers specify selection (1..maximum selection number), minutes (0..65535), seconds (0..65535) and samples (0..65535), in that order. For example, the string "25.13.46.1903" locates a point 13 minutes, 46 seconds and 1903 samples beyond the beginning of selection 25. Playback channel (MSC cue list) is specified as a number in the range 8..15 (AudioBox 1616HD) or 0..15 (AudioBox AB1616) (zero-based channel numbering). Neither the location string nor the playback channel string are optional. One resume location may be set per playback channel; if a resume location is currently set on a channel, another RESUME command for that channel will clear the existing resume point and set a new one. A RESUME command specifying an invalid location is rejected.

The stop that causes playback to resume at (or jump to) the new location can be either a immediate stop (a null STOP command) or an automatic stop (see STOP command above). Sending a RESUME command sets a pending jump to the specified playback location. It may cause a jump forward to a new playback location, or backward, providing a looping function. It may be sent anytime before playback on the channel reaches a stop point. After the jump takes place, the resume remains in effect. Note that in firmware prior to T247 and V681, resume locations were cleared after each jump. This is no longer the case, simplifying the programming of recurring audio loops.

When a null STOP is used to trigger a resume, there is an approximately two second delay between the STOP and the resume jump to allow synchronization of the playback channels.

A resume location may be cleared by sending a RESUME command with the playback location string set to "0", with the playback channel string set to the channel to be cleared, or by sending a DISABLE CHANNEL command or a RESET command. Note that LOAD and GO commands no longer clear pending jumps.

When multiple channels are being played back synchronously, setting stop and resume locations that are at synchronized locations in the source material will guarantee that the channels are still synchronized after the jump.

The RESUME command is disabled when recording or multi-channel playback is in progress. A null STOP command sent at any time will switch the AB64 back to single channel file playback mode, enabling this command.


PLAYBACK ALL_OFF      Stop all playback, restartable with playback RESTORE
type: MSC  
  [cmd format byte]: [13H] (playback)
  [cmd/data field]:  [08H]
  message length: 7

The playback ALL_OFF command stops playback on all playback channels, keeping track of which channels are playing so that they may be restarted with a subsequent playback RESTORE command. This is a subset of the actions performed by the show control ALL_OFF command, which uses the 'sound' command format byte [10H]. Stop notifications are cleared prior to stopping playback.

After a playback ALL_OFF command has been executed, subsequent playback ALL_OFF commands are ignored until a playback RESTORE command has been executed. This is required because ALL_OFF keeps a record of which channels are playing back immediately before the ALL_OFF command is executed, so a subsequent RESTORE command can reestablish the playback. A second ALL_OFF command, if executed, would overwrite the saved record.

The playback ALL_OFF command is disabled when recording is in progress.


PLAYBACK RESTORE    Restart playback stopped by previous ALL_OFF
type: MSC  
  [cmd format byte]: [13H] (playback)
  [cmd/data field]:  [09H]
  message length: 7

The playback RESTORE restarts all playback channels that were stopped by a previous playback ALL_OFF at the stopped playback location. This is a subset of the actions performed by the show control RESTORE command, which uses the 'sound' command format byte [10H].

After a RESTORE command has been executed, subsequent RESTORE commands are ignored until an ALL_OFF command has been executed.

The playback RESTORE command is disabled when recording is in progress.


SET STOP NOTIFICATION   Specify command to run when playback stop occurs
  type: sysex
[cmd/data field]:  [1FH pcn 01H/00H cmdstr]
  pcn: playback channel number 8..15 (AudioBox 1616HD), 0..15 (AudioBox AB1616) 
        (NOTE: pcn is not an ASCII string as in MSC commands!)
  01H sets notification, 00H clears notification
  cmdstr: MIDI command to be run when playback is stopped, with first byte
  (start of sysex: F0H) and last byte (end of sysex: F7H) stripped off. 
message length: 16..73

SET STOP NOTIFICATION sets the command to execute when playback stops on a specified channel. The stop that causes the STOP NOTIFICATION command to execute can be either a immediate stop or an automatic stop (see STOP command above). When a stop occurs, the command is executed by the AudioBox and also transmitted on the MIDI OUT port. Any sysex or MSC command is allowed. A non-AudioBox command will be ignored by the AudioBox, but still transmitted on the MIDI OUT port. The command can be up to 64 bytes long (including the status bytes at the beginning and end of the command string).

The command string being set (with the first and last bytes stripped off) is included verbatim in the SET STOP NOTIFICATION message. MIDI protocol requires that the status bytes which begin and end the MIDI sysex command (start of sysex: F0H and end of sysex: F7H) be removed. For example, the following string is a MSC GO cue 10 command to device 1:

   F0H 7FH 01H 02H 10H 01H 31H 30H F7H
 

To set this string as the command to be executed when channel 5 stops, the following SET STOP NOTIFICATION message would be sent:

   F0H 00H 00H 40H 02H 00H 00H 1FH 05H 01H 7FH 01H 02H 10H 01H 31H 30H F7H
 

Once set, the command will be transmitted and/or executed every time the channel is stopped. The SET STOP NOTIFICATION command can also be used to turn off stop notification, by clearing the set/clear notification byte. In this case, all data after the clear notification byte is ignored.

Normally when the stop notification occurs, the command message is executed AND sent out the MIDI OUT port. Setting the STOP_NOTIFY-MIDI filter on (see SET MIDI ECHO) prevents messages that are addressed to the AudioBox's current MIDI ID from being sent out the MIDI OUT port.

Stop notification commands set by SET STOP NOTIFICATION are not stored to disk, and therefore must be reprogrammed each time the AudioBox is powered on.


DISABLE CHANNEL        Disable playback on a channel or all channels
  type: MSC  
  [cmd format byte]: [13H] (playback)
  [cmd/data field]:  [1CH pch] [1CH]
  pch: playback channel string
  if no playback channel string [1CH], disable all channels
message length: 7..9

DISABLE CHANNEL (MSC CLOSE CUE LIST command) disables playback on a specific channel (or all channels) and clears any automatic stop points, stop notifications or resume points set on the channel (or all channels). If the channel is currently playing back audio, playback on that channel (or all channels) will be immediately stopped. Playback channel (MSC cue list) is specified as a number in the range 8..15 (AudioBox 1616HD) or 0..15 (AudioBox AB1616) or 0..63 (AB64) (zero-based channel numbering). The state of the playback channel after receiving this command is 'disabled'. See Playback States for more information.

The DISABLE CHANNEL command is disabled when recording or multi-channel playback is in progress. A null STOP command sent at any time will switch the AB64 back to single channel file playback mode, enabling this command.

SET INPUT CHANNEL MODE      Set source mode for input channel 
                              (Model AB1616 only)
  type: MSC  
  [cmd format byte]: [10H] (sound)
  [cmd/data field]:  [06H  00H  0DH  ii  mm]
 
  ii: input channel number, 00H..07H for inputs 1 to 8
  mm: input channel source mode: 
    00H: analog with playback override ("automatic")
    01H: analog only                   ("live input only")
    02H: none with playback override   ("playback only")
 message length: 11

SET INPUT CHANNEL MODE sets the source mode for an input channel. This command is for AudioBox AB1616 only; if sent to an AudioBox AB64 or1616HD it will register as a "bad" message, but have no other effect. On AudioBox AB1616, matrix input channels 0 through 7 (zero-based channel numbering) have two potential audio sources: the corresponding back panel analog input and the corresponding disk playback channel. This command controls the switching between these two signal sources. If the command is set with a channel number greater than 7, it will register as a "bad" message.

On startup, the channel mode for inputs 0 through 7 is set to automatic (channels 8..15 are permanently set to 'playback only'). In automatic mode, the signal source for the input channel is the playback channel if playback is active on the channel (i.e. playback state is 'playing') and is the back panel analog input otherwise (i.e. playback state is 'stopped' or 'disabled'). If the input channel mode is 'live input only', the signal source for the input channel is the back panel analog input regardless of whether or not playback is active on the channel. If the input channel mode is 'playback only', the signal source for the input channel is the playback channel regardless of whether or not playback is active on the channel. In this case, if playback is not active on the channel, the channel is silent.

The current input channel mode settings can be determined by doing a GET PLAYBACK or QUERY PLAYBACK command.


Section 8: Disk Drive Commands

 

ERASE SELECTION   Erase one or a range of audio selections
  type: sysex  
  [cmd/data field]:  [09H ff ff tt tt]   
  ff ff: from selection number  (lsb first, 14 bit value, 7 bits per byte)
  tt tt: to selection number  (lsb first, 14 bit value, 7 bits per byte)
  message length: 13

This command is no longer supported, use ERASE FILE or ERASE FILE EN instead.

 

ERASE SHOW   Erase one or a range of show files
  type: sysex  
  [cmd/data field]:  [0EH ff ff tt tt]   
  ff ff: from selection number  (lsb first, 14 bit value, 7 bits per byte)
  tt tt: to selection number  (lsb first, 14 bit value, 7 bits per byte)
  message length: 13

This command is no longer supported, use ERASE FILE or ERASE FILE EN instead.


DEFRAGMENT DRIVE   Defragment the disk drive
type: sysex  
  [cmd/data field]:  [0AH]   
message length: 9

For efficient storage and playback, the AudioBox stores all data sequentially on the internal hard disk drive. When audio selections and data files are erased and when they are rewritten to a larger size, unused areas are created on the disk. The DEFRAGMENT DRIVE command coalesces all of the unused disk space into one free block. This is only required when data has been erased and/or rewritten and the disk is getting full. This command can be run at any time, and will stop any playback activity (including show control) or audio downloads in progress. DEFRAGMENT DRIVE may require a considerable amount of time to execute. When executing, no other commands may be performed. The SCSI LED on the front panel will flash, indicating internal hard disk drive activity, during the execution of the DEFRAGMENT DRIVE command. Powering down the AudioBox while a DEFRAGMENT DRIVE command is executing may result in a corrupted disk directory. (The same is true of a personal computer doing a disk defragmentation.)


FORMAT DRIVE   Low-level format the disk drive
type: sysex  1616HD / AB1616 only
  [cmd/data field]:  [0FH 77H 4CH 06H]
message length: 12

The FORMAT DRIVE command performs a low-level formatting of the internal disk drive. All data on the drive will be lost. This is required only when the drive has developed bad sectors, resulting in data errors and/or bad audio playback at fixed locations on the disk. Low-level formatting can take a long time, depending on the size of the drive. When executing, no other AudioBox commands may be performed. The SCSI LED on the front panel will flash during the execution of the FORMAT DRIVE command. Also, a SCSI TEST UNIT READY will return with CHECK status (i.e. not ready) until the low-level formatting is complete. Once completed, the AudioBox should be powered off and back on and the firmware should be reinstalled. When the firmware initializes the AudioBox, it will detect the erased drive and reinitialize it. The drive will then be ready for the downloading of show and audio files.


Section 9: MIDI Query Commands

The MIDI Query commands are primarily intended to provide status information to MIDI-connected hosts. Each of these commands generates a MIDI-formatted response string. If the command is received on a MIDI IN port, the response string is sent on the corresponding MIDI OUT port. If the command is received via SCSI, the response string is queued internally and can be retrieved using a SCSI RECEIVE RESPONSE transaction. If the command is received on an ethernet port, the response string is sent on the primary MIDI OUT port.

AB64 firmware supports QUERY DEVICE ID, QUERY STATS and QUERY VERSION commands only.


QUERY DEVICE ID       Request AudioBox's currently set device IDs
  type: sysex  
  [cmd/data field]:  [10H]
  message length: 9 

QUERY DEVICE ID requests the AudioBox's currently set device ID(s). The AudioBox will respond by sending a RESPONSE DEVICE ID message to the requesting controller. The RESPONSE DEVICE ID message will be sent with the device's individual ID in the srcID field, and the srcID of the incoming QUERY DEVICE ID message in the destID field. If no individual ID has been set, the AudioBox sends a RESPONSE DEVICE ID message with the universal device ID (7FH) in the srcID field and the data field.

RESPONSE DEVICE ID    Device IDs - sent by AudioBox
  type: sysex  
  [cmd/data field]:  [20H  IID  GID...]
  IID: individual device ID assigned
  GID: list of group ID(s) assigned, if any, in ascending order.
  response length: 9..25
 

QUERY STATS      Request I/O statistics
  type: sysex  
  [cmd/data field]:  [11H] or [11H cc]
  cc: 00H: reset all counts to zero after sending response
  cc: any number other than 00H: no effect
  message length: 9 or 10

QUERY STATS requests the AudioBox's input / output statistics. The AudioBox will respond by sending a RESPONSE STATS message to the srcID of the incoming request. The QUERY STATS message itself is counted, incrementing both the 'commands received' and 'good commands received' counts, either MIDI or SCSI. If a zero is sent after the command byte, all counts are all zeroed, and a RESPONSE STATS message is sent, reporting all zeros.

RESPONSE STATS   input/output statistics - sent by AudioBox
  type: sysex  
  [cmd/data field]:  [21H  (6) xxxxxx]
  (6) xxxxxx: 3-byte numbers (lsb first, 21 bit value, 7 bits per byte) in the
      following order:
      number of MIDI commands received 
      number of good MIDI commands received
      number of bad MIDI commands received
      number of SCSI commands received
      number of good SCSI commands received
      number of bad SCSI commands received
  message length: 27

All commands received by the AudioBox, whether sent to a valid AudioBox device ID or not, are counted as commands received. A "bad" commands is one in which the device ID is valid, but the command is invalid, the data is out-of-range or the length is incorrect. A "good" commands is one that has been validated and performed by the AudioBox.

If the time between the arrival of first byte and the last byte of the message was more than 1 second, the 'bad' message count is incremented, but if the command is valid it will also be performed by the AudioBox and increment the 'good' message count.


QUERY VU              Request current input and output VU levels
  type: sysex  
  [cmd/data field]:  [12H] or [12H xx]
     xx: send VU periodically as follows:  (AB1616 / 1616HD only)
        00: periodic VU off
        01: send VU every 32 milliseconds (uses 40% MIDI OUT bandwidth)
        02: send VU every 64 milliseconds (uses 20% MIDI OUT bandwidth)
        03: send VU every 128 milliseconds (uses 10% MIDI OUT bandwidth)
  message length: 9 or 10  

QUERY VU requests the current input and output VU levels. The AudioBox will respond by sending a RESPONSE VU message to the srcID of the incoming request. The RESPONSE VU message contains a list of VU levels for all inputs and all outputs.

QUERY VU can also enable or disable periodic VU messages to be sent to the MIDI OUT port. (AB1616 / 1616HD only). When enabled by sending a 01H, 02H or 03H after the cmd byte, a RESPONSE VU message is sent every 32, 64 or 128 milliseconds to the MIDI OUT port until disabled. The [12H 00H] form of the command disables periodic VU messages. Periodically generated VU messages are sent to the universal device ID (7FH).

RESPONSE VU          Current input and output VU levels - sent by AudioBox
  type: sysex
  [cmd/data field]:  [22H  (16)ii (16)oo]
  (16)ii: current VU for all 16 input channels, 00H..7CH
  (16)oo: current VU for all 16 output channels, 00H..7CH
  message length: 41

The VU value sent is in dBu, biased up by 100, so that, for example, a -20 dBu signal is reported as 80 (50H), a 0 dBu signal is reported as 100 decimal (64H), and a full-scale input of 20 dBu is reported as 120 decimal (78H), etc. Reported values greater than 120 decimal indicate clipping; the maximum value reported is 124 decimals (7CH).


QUERY SUBMASTER       Request current submaster assignments
  type: sysex  
  [cmd/data field]:  [13H]      
  message length: 9

QUERY SUBMASTER requests the current submaster assignments. The AudioBox will respond by sending a RESPONSE SUBMASTER message on the MIDI OUT port for each assigned submaster to the srcID of the incoming request. The RESPONSE SUBMASTER messages will be sent in increasing submaster order. If no submasters are assigned, no RESPONSE SUBMASTER messages are sent.

RESPONSE SUBMASTER   Current submaster assignments - sent by AudioBox
  type: sysex  
  [cmd/data field]:  [23H  ss  nn...]
  ss: submaster
  nn: 00H-0FH for inputs 1 to 16, 20H-2FH for outputs 1 to 16 (AB1616 / 1616HD)
      00H-1FH for inputs 1 to 32, 20H-3FH for outputs 1 to 32 (AB64 only)
      40H-5FH for inputs 33 to 64, 60H-7FH for outputs 33 to 64 (AB64 only)
  nn...: variable length list of assigned channels
  message length: 10..42

The RESPONSE SUBMASTER message will list the channels in increasing order.


QUERY CONTROLLER      Request current MIDI controller assignments
  type: sysex  
  [cmd/data field]:  [14H]
  message length: 9      
 

QUERY CONTROLLER requests the current MIDI controller assignments. The AudioBox will respond by sending a RESPONSE CONTROLLER message for each assigned controller, in increasing controller number, to the srcID of the incoming request.

RESPONSE CONTROLLER  Current MIDI controller assignments - sent by AudioBox
  type: sysex  
  [cmd/data field]:  [24H  cc  ss]
  cc: controller
  ss: submaster
  message length: 11 
 
 

QUERY VERSION      Request firmware version
  type: sysex  
  [cmd/data field]:  [15H]
  message length: 9      
 

QUERY VERSION requests the current firmware revision identification string. The AudioBox will respond by sending a RESPONSE VERSION to the srcID of the incoming request.

RESPONSE VERSION  Current firmware version - sent by AudioBox
  type: sysex  
  [cmd/data field]:  [25H  (52)text] 
  (52)text: 52 characters of packed text as follows:
      (8) manufacturer "HARMONIC"
      (16) product e.g. "AudioBox DM16-D "
      (4) firmware version e.g. "V649"
      (8) firmware date e.g. "03/20/00"   (month/day/year format)
      (8) firmware time e.g. "15:34:22"      (24 hour format)
      (8) unit serial number e.g. "27918001"
  message length: 61
 

QUERY IO LEVELS    Request current input and output amplitude levels
  type: sysex  
  [cmd/data field]:  [30H]
  message length: 9

QUERY IO LEVELS requests the current input and output amplitude level settings. The AudioBox will respond by sending a RESPONSE IO LEVELS to the srcID of the incoming request. The values returned are those set by the most recently received commands that change the input and output level settings. Commands that change the input and output levels are SET INPUT LEVEL, RECALL INPUT LEVEL, SET OUTPUT LEVEL, RECALL OUTPUT LEVEL and SET MATRIX. If a ramp is active on an input or output, the actual audio level at the input or output will differ from the value returned by this command until the ramp is complete.


RESPONSE IO LEVELS    Input and output amplitude levels - sent by AudioBox
  type: sysex  
  [cmd/data field]:  [40H (32)aa]
  (32)aa: list of 16 current input amplitude settings (each 00H..7FH)
   followed by 16 current output amplitude settings
  message length: 41
 

QUERY CROSSPOINT LEVELS    Request current crosspoint amplitude levels
  type: sysex  
  [cmd/data field]:  [31H]
  message length: 9

QUERY CROSSPOINT LEVELS requests the current crosspoint amplitude level settings. The AudioBox will respond by sending a set of four RESPONSE CROSSPOINT LEVEL messages to the srcID of the incoming request. The values returned are those set by the most recently received commands that change the crosspoint level settings. Commands that change the crosspoint levels are SET CROSSPOINT LEVEL, RECALL CROSSPOINT LEVEL and SET MATRIX. If a ramp is active on a crosspoint, the actual audio level at the crosspoint will differ from the value returned by this command until the ramp is complete.


RESPONSE CROSSPOINT LEVELS    Crosspoint amplitude levels -
                                sent by AudioBox
  type: sysex  
  [cmd/data field]:  [41H xx (64)aa]
   xx: quarter matrix indicator:
      00H: all crosspoints for inputs 0..3
      01H: all crosspoints for inputs 4..7
      02H: all crosspoints for inputs 8..11
      03H: all crosspoints for inputs 12..15
  (64)aa: list of 64 current crosspoint amplitude values (each 00H..7FH)
   All 16 crosspoint levels for one input are sent, followed by all 16
   levels for the next input, etc.
  message length: 74
 

QUERY MUTE / SOLO  Request current mute and solo settings
  type: sysex  
  [cmd/data field]:  [35H]
message length: 9

QUERY MUTE / SOLO requests the current mute and solo settings. The AudioBox will respond by sending a RESPONSE MUTE / SOLO message to the srcID of the incoming request.


RESPONSE MUTE / SOLO    mute and solo settings - sent by AudioBox
  type: sysex  
  [cmd/data field]:  [45H 32mm]
   mm: mute/solo state:
      00H: channel is not muted and is not soloed
      01H: channel is muted by a MUTE command
      02H: channel is soloed
      03H: channel is muted and soloed (solo overrides)
      04H: channel is muted because another channel is soloed
      05H: channel is muted by a MUTE command and another channel is soloed
  The first 16 values are for input channels, the final 16 are for
  output channels.  
  message length: 41
 

QUERY DELAY VALUES  Request current input and output delay values
  type: sysex  
  [cmd/data field]:  [32H]
message length: 9

QUERY DELAY VALUES requests the current input and output delay settings. The AudioBox will respond by sending two RESPONSE DELAY VALUES messages to the srcID of the incoming request, one for input delays and one for output delays.


RESPONSE DELAY VALUES  Input and output delay values - sent by AudioBox
  type: sysex  
  [cmd/data field]:  [42H yy (16)MTC]
   yy: input/output flag:
      00: input settings
      01: output settings
  (16)MTC: 16 delay settings, expressed as MIDI time code (24 frame)
  message length: 90
 

QUERY DELAY ENABLE  Request current delay enable state
  type: sysex  
  [cmd/data field]:  [3AH]
message length: 9

QUERY DELAY ENABLE requests the current delay enable state for each input and output. The AudioBox will respond by sending a RESPONSE DELAY ENABLE message to the srcID of the incoming request.


RESPONSE DELAY ENABLE  Delay enable states - sent by AudioBox
  type: sysex  
  [cmd/data field]:  [4AH (32)yy]
   yy: delay enable flag:
      00: delay disabled
      01: delay enabled
  (32)yy: list of 16 input delay enable flags followed by 16
     output delay enable flags
   message length: 41
 
 

QUERY EQ COEFFICIENTS  Request EQ coefficients for a specified band
  type: sysex  
  [cmd/data field]:  [34H nn bb]
  nn: 00H-0FH for inputs 1 to 16, 20H-2FH for outputs 1 to 16 (AB1616 / 1616HD)
      00H-1FH for inputs 1 to 32, 20H-3FH for outputs 1 to 32 (AB64 only)
      40H-5FH for inputs 33 to 64, 60H-7FH for outputs 33 to 64 (AB64 only)
  bb: band 00H..0BH for bands 0 to 11
message length: 11

QUERY EQ COEFFICIENTS requests the current coefficients for a specified band on a specified channel. The AudioBox will respond by sending a RESPONSE EQ COEFFICIENTS message to the srcID of the incoming request. The RESPONSE EQ COEFFICIENTS message also contains the number of active bands for the filter on the specified channel.


RESPONSE EQ COEFFICIENTS    EQ coefficients and parameters
  type: sysex  
  [cmd/data field]:  [44H nn bb aa a2, a1, a0, b1, b0, 
                             tt ff ff ff ww ww gg gg]
  nn: 00H-0FH for inputs 1 to 16, 20H-2FH for outputs 1 to 16 (AB1616 / 1616HD)
      00H-1FH for inputs 1 to 32, 20H-3FH for outputs 1 to 32 (AB64 only)
      40H-5FH for inputs 33 to 64, 60H-7FH for outputs 33 to 64 (AB64 only)
      (same as nn in QUERY EQ COEFFICIENTS that generated this response)
  bb: band 00H..0BH for bands 0 to 11
      (same as bb in QUERY EQ COEFFICIENTS that generated this response)
  aa: number of active bands for this filter, 00H..0CH for bands 0 to 12
  a2, a1, a0, b1, b0: 5 filter coefficients, 4 bytes ea. See 
    EQ Coefficients, above.
  tt: filter type: 0:none, 1:lowpass, 2:highpass, 3:bandpass
  ff ff ff: centre frequency * 100 (e.g. 22575 for 225.75 Hz)
    (2000..2000000  lsb first, 21 bit unsigned value, 7 bits per byte)
  ww ww: bandwidth * 10 
         (10..990 for 1%..99% of centre frequency)
         (lsb first, 14 bit unsigned value, 7 bits per byte)
  gg gg: gain in dB * 10 (e.g. 156 for +15.6 dB)
         (-300..300, lsb first, 14 bit signed value, 7 bits per byte)
message length: 40
 
QUERY SHOW STATE    Request current show state information
  type: sysex  
  [cmd/data field]:  [33H ss]
  ss: selector byte:
      00H: show header information
      01H: current information for first opened list
      02H: current information for second opened list
      ...
      08H: current information for eighth opened list
  message length: 10

Current AudioBox show controller information and status can be obtained from the AudioBox using the QUERY SHOW STATE command. The AudioBox will respond by sending a RESPONSE SHOW STATE message of the requested type to the srcID of the incoming request. Two lists can be open simultaneously on the 1616HD model; eight lists can be open simultaneously on all other models.

RESPONSE SHOW STATE    Current show data - sent by AudioBox
  type: sysex
 
  response to selector 00H:
  [cmd/data field]:  [43H 00H xx xx yy yy zz zz me ml mtc mtc mtc mtc mtc
                      mtcf mtcr mtcx [32]sn]
  xxxx: currently open show number (lsb first, 14 bit value, 7 bits per byte)
  yyyy: number of paths (lsb first, 14 bit value, 7 bits per byte)
  zzzz: number of lists (lsb first, 14 bit value, 7 bits per byte)
  me:   MIDI echo: bit 0: MIDI-MIDI echo (see SET MIDI ECHO)
                   bit 1: SCSI-MIDI echo
                   bit 2: SHOW-MIDI echo
                   all other bits reserved, set to zero
  ml:   MIDI loopback: 01H currently on, 00H currently off
  mtc: current value of the MTC generator in ms (lsb first, 32 bit value, 7 
     bits per byte, lower 4 bits of msb used, upper bits always zero)
  mtcf: MTC frames/sec (24, 25, 30, 0 = disabled)
  mtcr: MTC generator running (non-zero: running)
  mtcx: MTC has been received (non-zero)
  sn:   show name string, 32 characters (exactly as in show file)
message length: 58
 
response to selector 01H through 08H:
  [cmd/data field]: [43H ss op lcf ln ln lf lf 
    pn pn nc nc nl nl lc lc lc lc lc
    lm lm lm lm l1 l1 l2 l2 l3 l3 l4 l4
    nm nm nm nm n1 n1 n2 n2 n3 n3 n4 n4]
  ss:   selector byte:
  op:   01H: list and path are open, 00H list and/or path are closed
  lcf:  01H: last cue in path has been fired, 00H: not been fired
  lnln: list number (lsb first, 14 bit value, 7 bits per byte)
  lflf: list flags (lsb first, 14 bit value, 7 bits per byte)
  pnpn: path number (lsb first, 14 bit value, 7 bits per byte)
  ncnc: number of cues in path (lsb first, 14 bit value, 7 bits per byte)
  nlnl: number of live cues (lsb first, 14 bit value, 7 bits per byte)
  lclclclclc: list clock, milliseconds (lsb first, 32 bit value, 7 
     bits per byte, lower 4 bits of msb used, upper bits always zero)
  lmlmlmlm: last cue, major cue number (lsb first, 28 bit value, 7 bits per byte)
  l1l1: last cue, subsection 1 (lsb first, 14 bit value, 7 bits per byte)
  l2l2: last cue, subsection 2 (lsb first, 14 bit value, 7 bits per byte)
  l3l3: last cue, subsection 3 (lsb first, 14 bit value, 7 bits per byte)
  l4l4: last cue, subsection 4 (lsb first, 14 bit value, 7 bits per byte)
  nmnmnmnm: next cue, major cue number (lsb first, 28 bit value, 7 bits per byte)
  n1n1: next cue, subsection 1 (lsb first, 14 bit value, 7 bits per byte)
  n2n2: next cue, subsection 2 (lsb first, 14 bit value, 7 bits per byte)
  n3n3: next cue, subsection 3 (lsb first, 14 bit value, 7 bits per byte)
  n4n4: next cue, subsection 4 (lsb first, 14 bit value, 7 bits per byte)
message length: 51
 

QUERY PLAYBACK  Request current playback state and channel mode
  type: sysex  
  [cmd/data field]:  [36H nn]
  nn: playback channel number, 00H..0FH (zero-based channel numbering)
  nn = 7FH: send all channels
message length: 10

QUERY PLAYBACK requests the current playback state and channel mode for an input channel. The AudioBox will respond by sending a RESPONSE PLAYBACK message to the srcID of the incoming request. On an AudioBox 1616HD, valid playback channel numbers are 8 through 15. On an AudioBox AB1616, valid playback channel numbers are 0 through 15. If the playback channel number is set to 7FH, the AudioBox will send a set of RESPONSE PLAYBACK messages, one for each playback channel (8 through 15 on an AudioBox 1616HD and 0 through 15 on an AudioBox AB1616). Note that the input channel mode field is always set to zero for all channels of an AudioBox 1616HD and for channels 8 through 15 for an AudioBox AB1616. See GET PLAYBACK for the SCSI version of this command.


RESPONSE PLAYBACK    Current playback state - sent by AudioBox
  type: sysex  
  [cmd/data field]:  [46H nn xx yy yy zz zz zz zz zz]
  nn: playback channel number, 00H..0FH (zero-based channel numbering)
  xx: playback state and input channel mode
    bits 0 & 1:      bits 2 & 3: 
    playback state   input channel mode
    00H: stopped     00H: automatic
    01H: playing     01H: live input only
    02H: disabled    02H: playback only
  yyyy: current selection number (lsb first, 14 bit value, 7 bits per byte)
  zzzzzzzzzz: selection offset in blocks (lsb first, 32 bit value, 7 
  bits per byte, lower 4 bits of msb used, upper bits always zero)
  message length: 18

See note above on converting number of blocks to time.


QUERY DRIVE   Request disk drive information
type: sysex  
  [cmd/data field]:  [17H]
  message length: 9

QUERY DRIVE requests internal disk drive capacity information. The AudioBox will respond by sending a RESPONSE DRIVE message to the srcID of the incoming request. The message will contain the maximum space available on the drive, the total space currently available on the drive and the contiguous free space currently available, all expressed in blocks (512 bytes per block). New audio selections are written into the contiguous free space area. The size of an audio selection must be less than or equal to the number of blocks of contiguous free space or it cannot be written to the disk. After the drive has been defragmented (see DEFRAGMENT DRIVE), the total space available will equal the contiguous free space available on the drive. When there are no selections written on the drive, the total space available and the contiguous free space available will equal the the maximum space available.

RESPONSE DRIVE   disk drive data- sent by AudioBox
type: sysex  
  [cmd/data field]:  [27H  xx xx xx xx xx  yy yy yy yy yy zz zz zz zz zz]
  xx xx xx xx xx: total drive capacity in blocks (lsb first, 32 bit value,
    7 bits per byte, lower 4 bits of msb used, upper bits always zero)
  yy yy yy yy yy: total free space in blocks (lsb first, 32 bit value,
    7 bits per byte, lower 4 bits of msb used, upper bits always zero)
  zz zz zz zz zz: available (contiguous) free space in blocks (lsb first, 
    32 bit value, 7 bits per byte, lower 4 bits of msb used, upper bits 
    always zero)
  message length: 24
 

QUERY SELECTION   Request audio selection information
type: sysex  
  [cmd/data field]:  [18H]
  message length: 9

QUERY SELECTION requests information about the audio selections recorded on the internal disk drive. The AudioBox will respond by sending a sequence of RESPONSE SELECTION messages to the srcID of the incoming request, one for each selection recorded on the disk drive. Each RESPONSE SELECTION message will contain the current size of the data recorded on that audio selection expressed in blocks (512 bytes per block). Blank selections (selections of size zero) are not reported.


RESPONSE SELECTION  Audio selection information- sent by AudioBox
type: sysex  
  [cmd/data field]:  [28H  ss ss xx xx xx xx xx]  
  ss ss: selection number (lsb first, 14 bit value, 7 bits per byte)
  xx xx xx xx xx: recorded size in blocks (lsb first, 32 bit value,
    7 bits per byte, lower 4 bits of msb used, upper bits always zero)
  message length: 16
 

QUERY SHOW      Request show directory information
type: sysex  
  [cmd/data field]:  [19H]
  message length: 9

QUERY SHOW requests information about shows recorded on the internal disk drive. The AudioBox will respond by sending a sequence of RESPONSE SHOW messages to the srcID of the incoming request, one for each defined (non-zero-length) show. Each RESPONSE SHOW message will contain the current size of the data recorded in that show expressed in blocks (512 bytes per block).

RESPONSE SHOW    Show information- sent by AudioBox
type: sysex
  [cmd/data field]:  [29H nn nn xx xx xx xx xx]  
  nn nn: show number (lsb first, 14 bit value, 7 bits per byte)
  xx xx xx xx xx: show size in blocks (lsb first, 32 bit value,
    7 bits per byte, lower 4 bits of msb used, upper bits always zero)
message length: 16
 


Section 10: SCSI Implementation (AB1616 & 1616HD only)

The AudioBox conforms to the SCSI specification ANSI X3T9.2 version 2 as a target processor device. All commands are sent to the logical unit number (LUN) zero.

MIDI-formatted commands (but not the SCSI-only commands) sent via SCSI use the AudioBox-specific SEND COMMAND operation code in the SCSI Command Descriptor Block (CDB). If a command issued via SCSI generates a response from the AudioBox, the response will be internally queued, and can be returned to the controller via a subsequent RECEIVE RESPONSE transaction. Command responses are returned in the order in which they were generated.

Because target devices do not initiate transactions on the SCSI bus, it is the responsibility of the controller issuing MIDI-formatted commands that generate responses from the AudioBox to retrieve the responses via RECEIVE RESPONSE commands. Failure to do so may result in lost command responses. Specifically, command responses are stored in system buffers which are, of course, finite in number. Depending on the level of I/O activity, buffers containing unretrieved command responses may be used by the AudioBox for more current I/O requirements.

Note that some commands generate delayed responses (e.g. SET INPUT LEVEL w/ NOTIFY). A RECEIVE RESPONSE issued before the command has completed and generated a command response will return with no data. The controller must (1) poll for the response, (2) use an internal delay so that the command response will have been generated by the time the SCSI RECEIVE is issued, or (3) not use the versions of the commands that generate delayed responses.

INQUIRY    SCSI Inquiry
  type: SCSI-only  
 
byte
num   data	description
0     12H      INQUIRY operation code
1     00H	 reserved
2     00H      unused
3     00H      unused
4     00H      unused
5	00H	 flag and link fields = 0
 

During the data phase of the INQUIRY transaction, the abInquiry data structure is sent from the AudioBox. The structure is exactly 52 bytes.

struct abInquiry {
   char manufacturer[8];   //"HARMONIC"
   char product[16];       //e.g. "AB1616 AudioBox " or "AudioBox DM16-D "
   char version[4];        //e.g. "T262"
   char assemblyDate[8];   //e.g. "02/08/21" (year/month/day format)
   char assemblyTime[8];   //e.g. "15:34:22" (24 hour format)
   char serialNumber[8];   //e.g. "32020012"
}
 

SEND COMMAND: Sending Commands to the AudioBox via SCSI

MIDI-formatted commands are sent via SCSI to the AudioBox using the Command Descriptor Block (CDB) below, which contains the AudioBox-specific SEND COMMAND operation code. This operation code is within the range (defined in the SCSI Specification) of vendor unique operation codes. The CDB for this command has the following general form when used with the AudioBox:

byte
num	data	description
0	CDH	AudioBox-specific SEND COMMAND operation code
1	00H	reserved
2	00H	unused
3	tt	 transfer length, most significant byte
4	tt	 transfer length, least significant byte
5	00H	flag and link fields = 0
 

When sending a AudioBox command via SCSI, the data phase of the SEND COMMAND transaction must contain the exact sequence of bytes as would be used to send the command via MIDI, as specified in the command descriptions above. All bytes must be sent, including all MSC or sysex header bytes, valid device IDs, and the end-of-sysex byte at the end. MIDI continuous controller messages may also be sent (see ASSIGN CONTROLLER), and will be interpreted in generic MIDI fader mode.(To be interpreted as MOTOR MIX messages, MIDI continuous controller messages must come in the MIDI IN port.)

The transaction length field in the command descriptor block must contain the exact length, in bytes, of the command.

It is possible to send more than one AudioBox command in the data phase of a SEND COMMAND transaction. In this case, the data phase of the SEND COMMAND transaction will contain a string of complete commands, as described in the preceding paragraph, concatenated one after the other. In the case of MIDI continuous controller messages, running status is not supported, i.e. all continuous controller messages must be three bytes long. The transaction length field in the command descriptor block must contain the sum of the lengths of all commands being sent, i.e. the total number of bytes of data being transmitted. No more than 256 commands should be sent in one SEND COMMAND transaction.

RECEIVE RESPONSE: Receiving Responses from the AudioBox via SCSI

Responses to MIDI-formatted commands are retrieved from the AudioBox using the Command Descriptor Block (CDB) below, which contains the AudioBox-specific RECEIVE RESPONSE operation code. This operation code is within the range (defined in the SCSI Specification) of vendor unique operation codes. The CDB for this command has the following general form when used with the AudioBox:

byte
num	data	description
0	CCH	AudioBox-specific RECEIVE RESPONSE operation code
1	00H	reserved
2	00H	unused
3	tt	 allocation length, most significant byte
4	tt	 allocation length, least significant byte
5	00H	flag and link fields = 0
 

During the data phase of the RECEIVE RESPONSE transaction, the AudioBox will send exactly the number of bytes specified in the allocation length in the command descriptor block. The allocation length should be large enough to contain the largest command response expected (see next paragraph). The data block returned from the AudioBox will contain the exact sequence of bytes as would be sent via MIDI, as specified in the RESPONSE descriptions above, (e.g. RESPONSE SELECTION) followed by zero bytes as required to fill the allocation length block. All bytes will be sent, including all MSC or sysex header bytes, device IDs, and the end-of-sysex byte at the end. If there are no command responses pending when a RECEIVE RESPONSE command is issued to the AudioBox, the data block will be all zero bytes.

As of version V625 firmware, the largest response message is 92 bytes. An allocation length of 128 bytes is recommended, but regardless of what value is used, the allocation length coded in the control program may require updating when the AudioBox firmware is upgraded, in the event that a larger command response is included in the upgrade.


GET DELAY          Get delay data from AudioBox
  type: SCSI-only  

Current AudioBox delay settings can be obtained from the AudioBox using the Command Descriptor Block (CDB) below, which contains the AudioBox-specific GET DELAY operation code. This operation code is within the range (defined in the SCSI Specification) of vendor unique operation codes. The CDB for this command has the following general form when used with the AudioBox:

byte
num	data	description
0	D6H	AudioBox-specific GET DELAY operation code
1	00H	reserved
2	00H	unused
3	00H	unused
4	00H	unused
5	00H	flag and link fields = 0

During the data phase of the GET DELAY transaction, the AudioBox will send a structure containing the current delay enable flags and the current delay settings in number of samples (48 kHz sampling rate), as specified below. The total data block is exactly 132 bytes, formatted as follows:.

struct abdelay {
   long delayEnableFlags; //delay enable flags, 1: enabled, 0: disabled
   long delayValue[32];   //current delay values in samples
}

The first 16 bits in delayEnableFlags (bits 0 &endash; 15) are for input channels, the final 16 are for output channels. The first 16 longwords in the delayValue array are for input channels, the final 16 are for output channels. This data may be retrieved as part of a GET REAL command.


GET EQ            Get EQ data from AudioBox
  type: SCSI-only  

Current AudioBox equalization settings can be obtained from the AudioBox using the Command Descriptor Block (CDB) below, which contains the AudioBox-specific GET EQ operation code. This operation code is within the range (defined in the SCSI Specification) of vendor unique operation codes. The CDB for this command has the following general form when used with the AudioBox:

byte
num	data	description
0	CBH	AudioBox-specific GET EQ operation code
1	00H	reserved
2      cc     channel: 00H-0FH: inputs 1 to 16, 20H-2FH: outputs 1 to 16
3	 dd	data returned: 0:coefficients, 1:parameters
4	00H	unused
5	00H	flag and link fields = 0
 

During the data phase of the GET EQ transaction, the AudioBox will send a structure containing all of the current equalization coefficients or parameters for the specified input or output channel, as specified below.

If dd = 0, the total data block is exactly 244 bytes, formatted as follows:

struct abeq {
   long nSections;  //current number of EQ bands, see SET EQ BANDS
   struct {
      long a2;      //coefficient a2
      long a1;      //coefficient a1
      long b1;      //coefficient b1
      long a0;      //coefficient a0
      long b0;      //coefficient b0
      } abeqsection[12];
}

Note that the order of the coefficients is slightly different from the order in SET EQ COEFFICIENTS.

If dd = 1, the total data block is exactly 148 bytes, formatted as follows:

struct abeqparams {
   long nSections;  //current number of EQ bands, see SET EQ BANDS
   struct {
      short filterType; // filter type: 
                        // 0:none, 1:lowpass, 2:highpass, 3:bandpass
      unsigned short bandwidth;  // bandwidth * 10 
           //  (valid range is 10..990 for 1%..99% of centre frequency)
      signed short gain;  //gain in dB * 10 (e.g. 156 for +15.6 dB)
      short pad;          //for longword alignment
      unsigned long frequency; // centre frequency * 100, 2000..2000000
                               // (e.g. 22575 for 225.75 Hz)
      } abeqparameters[12];
}

Note that if the filter type field is set to 0 (none), the other fields contain invalid data.


GET ALL EQ      Get EQ data from AudioBox
  type: SCSI-only  

The entire set of current AudioBox equalization settings can be obtained from the AudioBox using the Command Descriptor Block (CDB) below, which contains the AudioBox-specific GET ALL EQ operation code. This operation code is within the range (defined in the SCSI Specification) of vendor unique operation codes. The CDB for this command has the following general form when used with the AudioBox:

byte
num	data	description
0	DAH	AudioBox-specific GET EQ operation code
1	00H	reserved
2     00H	unused
3	 dd	data returned: 0:coefficients, 1:parameters
4	00H	unused
5	00H	flag and link fields = 0
 

During the data phase of the GET EQ transaction, the AudioBox will send a structure containing all of the current equalization coefficients or parameters for all input and output channels, as specified below.

If dd = 0, the total data block is exactly 8192 bytes, formatted as follows:

struct abeqall {
   struct abeq chaneq;  //EQ coeffs for one channel, 
                        //defined in GETEQ above
   char padding[12];    //pad structure out to 256 bytes
} abeqarray[32];

There are 32 entries in the array returned, each of which is 256 bytes long. Note that the order of the coefficients is slightly difference from the order in SET EQ COEFFICIENTS. The entries are not in channel order. The following array will return the abeqarray index for a specified channel (using 16..31 for output channels 0..15):

abeqarrayIndex[32] = 
{ 4, 12, 20, 28,  5, 13, 21, 29, 
  6, 14, 22, 30,  7, 15, 23, 31, 
  0,  2,  8, 10, 16, 18, 24, 26, 
  1,  3,  9, 11, 17, 19, 25, 27};

For example, to get the entry for output channel 1, use abeqarray [abeqarrayIndex[17]].

If dd = 1, the total data block is exactly 4736 bytes, formatted as follows:

struct abeqparams chanparams[32]; //EQ parameters for all channels, 
                                  //abeqparams defined in GETEQ above

There are 32 entries in the array returned, each of which is 148 bytes long. The 16 input channels are in array entries 0 through 15; the 16 output channels are in array entries 16 through 31.

GET LEVELS         Get gain level data from AudioBox
  type: SCSI-only  

Current AudioBox gain levels can be obtained from the AudioBox using the Command Descriptor Block (CDB) below, which contains the AudioBox-specific GET LEVELS operation code. This operation code is within the range (defined in the SCSI Specification) of vendor unique operation codes. The CDB for this command has the following general form when used with the AudioBox:

byte
num	data	description
0	D9H	AudioBox-specific GET STATS operation code
1	00H	reserved
2	00H	unused
3	00H	unused
4	00H	unused
5	00H	flag and link fields = 0

During the data phase of the GET LEVELS transaction, the AudioBox will send a structure containing all of the current gain levels, as specified below. The values returned are live gain levels, which may differ from the last set (target) gain levels when ramps are ongoing. The total data block is exactly 288 bytes, formatted as follows:

struct ablevels {
   char inputLevels[16];  //input levels 0..15, MIDI level 0..7F
   char outputLevels[16]; //output levels 0..15, MIDI level 0..7F
   signed char xptLevels[16][16];//crosspoint levels (out 0, in 0), 
                //   (out 0, in 1), ... (out 15, in 15),
                //  MIDI level -7F..7F, negative means phase reversed
}
 

The crosspoint levels are arranged in the array as follows: the first 16 bytes are all for output zero, and are for inputs zero through 15, in ascending input channel order. The next 16 bytes are for output 1, then 16 bytes for output 2, etc. Input and output levels are always positive. Crosspoint levels may be positive or negative (i.e. bit 7 of the byte may be set or clear). A negative value indicates that the phase is reversed. See SET CROSSPOINT PHASE. This data may be retrieved as part of a GET REAL command.


GET MUTE/SOLO   Get current mute and solo state data from AudioBox
  type: SCSI-only  

Current AudioBox mute and solo settings can be obtained from the AudioBox using the Command Descriptor Block (CDB) below, which contains the AudioBox-specific GET MUTE/SOLO operation code. This operation code is within the range (defined in the SCSI Specification) of vendor unique operation codes. The CDB for this command has the following general form when used with the AudioBox:

byte
num	data	description
0	D5H	AudioBox-specific GET MUTE/SOLO operation code
1	00H	reserved
2	00H	unused
3	00H	unused
4	00H	unused
5	00H	flag and link fields = 0

During the data phase of the GET MUTE/SOLO transaction, the AudioBox will send a 32-byte array of the current mute/solo settings, as specified below. The first 16 bytes in the array are for input channels (ascending order), the final 16 are for output channels.

mute/solo state:
      00H: channel is not muted and is not soloed
      01H: channel is muted by a MUTE command
      02H: channel is soloed
      03H: channel is muted and soloed (solo overrides)
      04H: channel is muted because another channel is soloed
      05H: channel is muted by a MUTE command and another channel is soloed

This data may be retrieved as part of a GET REAL command.

GET REAL      Get real-time data from AudioBox 
  type: SCSI-only  

AudioBox real-time data can be obtained from the AudioBox using the Command Descriptor Block (CDB) below, which contains the AudioBox-specific GET REAL operation code. This operation code is within the range (defined in the SCSI Specification) of vendor unique operation codes. The CDB for this command has the following general form when used with the AudioBox:

byte
num	data	description
0	C9H	AudioBox-specific GET REAL operation code
1	00H	reserved
2	ff1	data request flags
3	nl	 number of lists: ignored by 1616HD and AB1616 running T228 and lower
4	ff2	data request flags
5	00H	flag and link fields = 0
 
ff1 request flags 
bit   data       size
0     VU         32 bytes     see GET VU
1     STATS      28 bytes     see GET STATS
2     PLAYBACK   128 bytes    see GET PLAYBACK
3     SHOW       76+(32*nl) bytes    see GET SHOW
4     LEVELS     288 bytes    see GET LEVELS
5     MUTE/SOLO  32 bytes     see GET MUTE/SOLO
6     DELAY      132 bytes    see GET DELAY
7     SUBMASTER  324 bytes    see GET SUBMASTER
 
ff2 request flags 
bit   data       size
0     DISK STATE 32 bytes     see GET DISK STATE
1     TIME       32 bytes     see GET TIME
2     unused, set to zero
3     unused, set to zero
4     unused, set to zero
5     unused, set to zero
6     unused, set to zero
7     unused, set to zero
 
The 'number of lists' byte (nl) specifies the size of the show data
returned if the SHOW request flag is set, see GET SHOW.

During the data phase of the GET REAL transaction, the AudioBox will send a data structure which will be the concatenation of the requested data structures. This command can be used to increase the efficiency of SCSI-bus bandwidth and CPU cycle utilization when a host program is polling at frame rate for more than one of these data sets. With small chunks of data, it can often take more time to set up a SCSI transaction that to actually move the bytes. The data block returned will have the requested data structures in the following order: VU, stats, playback, show, levels, mute/solo, delay, submaster, disk state. The size of the data block will be the sum of the sizes of the requested data structures.

GET PLAYBACK   Get current playback state data from AudioBox
  type: SCSI-only  

Current AudioBox playback state information can be obtained from the AudioBox using the Command Descriptor Block (CDB) below, which contains the AudioBox-specific GET PLAYBACK operation code. This operation code is within the range (defined in the SCSI Specification) of vendor unique operation codes. The CDB for this command has the following general form when used with the AudioBox:

byte
num	data	description
0	D3H	AudioBox-specific GET STATS operation code
1	00H	reserved
2	00H	unused
3	00H	unused
4	00H	unused
5	00H	flag and link fields = 0

During the data phase of the GET PLAYBACK transaction, the AudioBox will send an array of 16 records, for channels 0 through 15, in increasing channel order. The total data block is exactly 128 bytes, formatted as follows:

struct abplbk[16] {
   short channelState;  //current playback state & input channel mode
   short selection;     //current selection number
   long plbkLocation;   //current playback location, from beginning
                          of selection in blocks (512 bytes = 256 samples)
  }
 
  channelState:
    bits 0 & 1: playback state
    00H: stopped
    01H: playing
    02H: disabled
 
    bits 2, 3 & 4: input channel source
    00H: analog with playback override
    01H: analog only
    02H: none with playback override (i.e. playback only)
    03H: none
    04H: Cobranet with playback override 
    05H: Cobranet only 
  (3, 4 and 5 not available in AB1616)
 

On an AudioBox 1616HD, valid playback channel numbers are 8 through 15 (UIOA version: 6 through 15). On an AudioBox AB1616, valid playback channel numbers are 0 through 15. See SET INPUT CHANNEL MODE for a definition of the input channel modes. Note that the input channel mode field is always set to zero for all channels of an AudioBox 1616HD. Channels 8 through 15 for an AudioBox AB1616 are always set to 02H: playback only.

This data may be retrieved as part of a GET REAL command. Note that the bytes within the words and longwords are sent most significant byte first, as is the convention over SCSI.

Note on conversion from blocks to equivalent time:

The following segment of C code provides a tested algorithm for converting a playback location in blocks into the equivalent hours, minutes and seconds:

#define samplesPerSecond 48000
#define bytesPerSample 2
#define secondsPerMinute 60
#define minutesPerHour 60
#define bytesPerBlock 512
#define blocksPerSecond samplesPerSecond*bytesPerSample/bytesPerBlock
#define blocksPerMinute secondsPerMinute*samplesPerSecond*bytesPerSample/bytesPerBlock
#define blocksPerHour blocksPerMinute*minutesPerHour
 
long blockOffset, tmp;
long seconds, minutes, hours;
 
	tmp = blockOffset;
	hours = tmp / blocksPerHour;
	tmp -= hours * blocksPerHour;
	minutes = tmp / blocksPerMinute;
	tmp -= minutes * blocksPerMinute;
	seconds = tmp / blocksPerSecond;
 
GET STATS     Get current device statistics from AudioBox
  type: SCSI-only  

Current AudioBox statistics can be obtained from the AudioBox using the Command Descriptor Block (CDB) below, which contains the AudioBox-specific GET STATS operation code. This operation code is within the range (defined in the SCSI Specification) of vendor unique operation codes. The CDB for this command has the following general form when used with the AudioBox:

byte
num	data	description
0	D1H	AudioBox-specific GET STATS operation code
1	00H	reserved
2	00H	unused
3	00H	unused
4	00H	unused
5	00H	flag and link fields = 0

During the data phase of the GET STATS transaction, the AudioBox will send exactly 28 bytes of data to the host, formatted as follows:

struct abstats {
   short freeBuffers;  //number of input buffers currently free
   short lowWaterMark; //lowest number of free input buffers since startup
   long SCSImsgs;      //SEND COMMAND messages received via SCSI
   long SCSImsgsOK;    //good SEND COMMAND messages received via SCSI
   long SCSImsgsBAD;   //bad SEND COMMAND messages received via SCSI
   long MIDImsgs;      //messages received via MIDI
   long MIDImsgsOK;    //good messages received via MIDI
   long MIDImsgsBAD;   //bad messages received via MIDI
   }

This data may be retrieved as part of a GET REAL command. Note that the bytes within the longword are sent most significant byte first, as is the convention over SCSI.

All commands received by the AudioBox, whether sent to a valid AudioBox device ID or not, are counted as commands received. A "bad" commands is one in which the device ID is valid, but the command is invalid, the data is out-of-range or the length is incorrect. A "good" commands is one that has been validated and performed by the AudioBox.

If the time between the arrival of first byte and the last byte of the message was more than 1 second, the 'bad' message count is incremented, but if the command is valid it will also be performed by the AudioBox and increment the 'good' message count.


GET VU   
  type: SCSI-only  

Current VU levels can be obtained from the AudioBox using the Command Descriptor Block (CDB) below, which contains the AudioBox-specific GET VU operation code. This operation code is within the range (defined in the SCSI Specification) of vendor unique operation codes. The CDB for this command has the following general form when used with the AudioBox:

byte
num	data	description
0	D0H	AudioBox-specific GET VU operation code
1	00H	reserved
2	00H	unused
3	00H	unused
4	00H	unused
5	00H	flag and link fields = 0

This SCSI-only form of VU command is provided to reduce the overhead in getting VU data via SCSI. Only one transaction is required, whereas using the QUERY VU command requires a SCSI transaction to send the command and another transaction to retrieve the response. During the data phase of the GET VU transaction, the AudioBox will send exactly 32 bytes of data to the host. The first sixteen bytes will contain the VU levels for the input channels (in channel order), and the second sixteen bytes will contain the VU levels for the output channels. The VU value sent is in dBu as seen at the input or output connectors of the AudioBox, biased up by 100, so that, for example, a -20 dBu signal is reported as 80 (50H), a 0 dBu signal is reported as 100 decimal (64H), and a full-scale input of 20 dBu is reported as 120 decimal (78H), etc. Reported values greater than 120 decimal indicate clipping; the maximum value reported is 124 decimals (7CH). This data may be retrieved as part of a GET REAL command.

GET SHOW      Get current show state data from AudioBox
  type: SCSI-only  

Current AudioBox show controller state information can be obtained from the AudioBox using the Command Descriptor Block (CDB) below, which contains the AudioBox-specific GET SHOW operation code. This operation code is within the range (defined in the SCSI Specification) of vendor unique operation codes. The CDB for this command has the following general form when used with the AudioBox:

byte
num	data	description
0	D4H	AudioBox-specific GET SHOW operation code
1	00H	reserved
2	00H	unused
3	nl	 number of lists: ignored by 1616HD and AB1616 running T228 and lower
4	00H	unused
5	00H	flag and link fields = 0

The 'number of lists' byte (nl) specifies the number of 'listdata' structures to be returned (see data structure definition, below). With an AudioBox model 1616HD and with an AudioBox model AB1616 running firmware T228 or lower, the number of 'listdata' structures returned is always 2 (nl byte is ignored). With an AudioBox model AB1616 running firmware T229 through T239, the number of 'listdata' structures to be returned is variable, up to a maximum of four. With an AudioBox model AB1616 running firmware T240 or higher, the maximum is eight.

During the data phase of the GET SHOW transaction, the AudioBox will send a data structure that contains the current show controller data. The total data block is exactly 76 + (32 * nl) bytes (e.g. if nl = 2, data block is 140 bytes), formatted as follows:

//Show Runtime Data
 
struct abshowruntime {
   unsigned short showNumber; //show number (0 = none open)
   char showName[32];         //show name (exactly as in show file)
   unsigned short numPaths;   //number of paths in the show
   unsigned short numLists;   //number of lists in the show
   unsigned char MIDIecho;    //flags: bit 0: MIDI-MIDI echo (see SET MIDI ECHO)
                              //   bit 1: SCSI-MIDI echo
                              //   bit 2: SHOW-MIDI echo
                              //   bit 3: STOP_NOTIFY-MIDI echo
                              //   all other bits reserved, set to zero
    char MIDIloopback;        //boolean, 0: off, non-zero: on
    long MTCgenerator;        //current value of the MTC generator in ms
    char MTCgenFrame;         //MTC frames/sec (24, 25, 30, 0 = disabled)
    char MTCgenRunning;       //MTC generator running (non-zero: running)
    char MTCreceived;         //MTC has been received
    char unused[29];
   struct {
      char dataValid;  //structure holds valid data, list and path are open
      char lastCueRun; //non-zero: last cue in path has been fired
      unsigned short listNumber; //list number
      unsigned short listFlags;  //list flags.
      unsigned short pathNumber; //path number
      unsigned short nCues;      //number of cues in path
      unsigned short nLiveCues;  //number of live cues in path
      unsigned long listClock;   //list clock value (milliseconds)
      unsigned long seqClock;    //sequence clock value (milliseconds)
      unsigned short lastCuenumber; //major number for last fired cue 
      unsigned char lastSub1;    //1st subsection number for last cue
      unsigned char lastSub2;    //2nd subsection number for last cue
      unsigned char lastSub3;    //3rd subsection number for last cue
      unsigned char lastSub4;    //4th subsection number for last cue
      unsigned short nextCuenumber; //major number for next cue
      unsigned char nextSub1;    //1st subsection number for next cue
      unsigned char nextSub2;    //2nd subsection number for next cue
      unsigned char nextSub3;    //3rd subsection number for next cue
      unsigned char nextSub4;    //4th subsection number for next cue
      } listdata[nl];
   }; 

This data may be retrieved as part of a GET REAL command. Note that the bytes within the words and longwords are sent most significant byte first, as is the convention over SCSI.


GET SUBMASTER         Get submaster data from AudioBox
  type: SCSI-only  

Current AudioBox submaster and controller settings can be obtained from the AudioBox using the Command Descriptor Block (CDB) below, which contains the AudioBox-specific GET SUBMASTER operation code. This operation code is within the range (defined in the SCSI Specification) of vendor unique operation codes. The CDB for this command has the following general form when used with the AudioBox:

byte
num	data	description
0	D7H	AudioBox-specific GET SUBMASTER operation code
1	00H	reserved
2	00H	unused
3	00H	unused
4	00H	unused
5	00H	flag and link fields = 0
 

During the data phase of the GET SUBMASTER transaction, the AudioBox will send a structure containing all of the current submaster levels, submaster assigns and controller assigns, as specified below. The total data block is exactly 324 bytes, formatted as follows:

struct absubmaster {
   short submasterGain;  //current submaster gain, see SET SUBMASTER GAIN
   short submasterZero;  //current submaster zero, see SET SUBMASTER ZERO
   short submasterLevels[32]; //current submaster levels (-128..+127)
   long submasterAssigns[32]; //current submaster assigns (see below)
   char controllerAssigns[128]; //current controller assigns
}

Note that the submaster level returned is the level set by the last SET SUBMASTER LEVEL command or MIDI continuous controller command for the given submaster. The submasterAssigns longword returned for each submaster is a bit array, in which bits 0 to 15, if set to 0, indicate assignments to inputs 0 to 15 and bits 16 to 31, if set to 0, indicate assignments to outputs 0 to 15. For example, a submasterAssigns longword value of FFFF0000H would be returned for a submaster assigned to all inputs. See ASSIGN SUBMASTER. The controllerAssigns byte returned for each MIDI controller contains a submaster number or FFH if the controller is unassigned. See ASSIGN CONTROLLER. This data may be retrieved as part of a GET REAL command.

GET TIME    Get current real time from AudioBox
  type: SCSI-only  

GET TIME returns the current real time settings from the AudioBox. This command is available in firmware versions T229 or V686 and newer.

The operation code for the GET TIME command is within the range of vendor unique operation codes defined in the SCSI Specification. The command descriptor block for this command has the following form when used with the AudioBox:

byte
num   data	description
0     DDH      AudioBox-specific GET TIME operation code
1     00H	 reserved
2     00H      unused
3     00H      unused
4     00H      unused
5	00H	 flag and link fields = 0
 

During the data phase of the GET TIME transaction, the abgettime data structure, containing the current real time settings as specified below, is sent from the AudioBox. The first word contians field valid flags. These flags, when set, indicate that the corresponding field has been set by an external command at least once since the AudioBox was powered up. The structure is exactly 32 bytes.

Most of the fields in the abgettime structure contain two digits of binary-coded decimal data. These fields are of type 'bcd' in the structure definition below. A 'bcd' field is one byte in length, with the tens digit occupying the upper four bits of the byte and the ones digit occupying the lower four bits of the byte. For example, '47' would be represented as the following binary byte: 0100 0111.

struct abgettime {
   word validFlags;      //field valid flags
   bcd year;             //year, '00' for year 2000 .. '99'
   bcd month;            //month, '01' .. '12' 
   bcd week;             //week of year, '01' .. '53'
   bcd day;              //day of month, '01 .. '31'
   bcd weekday;          //day of week, '01 .. 07' (Sunday = 1)
   bcd hour;             //hour, '00' .. '23'
   bcd minute;           //minute, '00' .. '59'
   bcd second;           //second , '00' .. '59'
   signed word sunrise;  //minutes before/after sunrise -1440..1440
   signed word sunset;   //minutes before/after sunset  -1440..1440
   byte daynight;        //night=0, day=1
   byte dst;             //standard=0, daylight savings time=1
   char unused[16];
   }
 
Valid flags
bit
0  year
1  month
2  week of year
3  day of month
4  day of week
5  hour
6  minute
7  second
8  sunrise
9  sunset
10 daynight
11 dst
12 - 15  not defined, set to 0

This data may be retrieved as part of a GET REAL command. Note that the bytes within the words and longwords are sent most significant byte first, as is the convention over SCSI.


GET GAIN TABLES    Get gain tables from AudioBox
  type: SCSI only  

GET GAIN TABLES returns the current I/O and crosspoint gain tables from the AudioBox. This command is available in firmware versions T228 or V665 and newer.

The operation code for the GET GAIN TABLES command is within the range of vendor unique operation codes defined in the SCSI Specification. The command descriptor block for this command has the following form when used with the AudioBox:

byte
num   data	description
0     DEH      AudioBox-specific GET GAIN TABLES operation code
1     00H	 reserved
2     00H      unused
3     00H      unused
4     00H      unused
5	00H	 flag and link fields = 0
 

During the data phase of the GET GAIN TABLES transaction, a data structure, as specified below, is sent to the AudioBox. The structure is exactly 512 bytes, formatted as follows:

struct abtabledata {
   short IOtable[128];  //Input/Output gain table
   short XPTtable[128]; //crosspoint gain table
}
 

The tables are sent in ascending MIDI amplitude order, that is, the first value sent is the gain value for MIDI amplitude 0, the seconds is for MIDI amplitude 1, and the last value sent is for MIDI amplitude 127. The table values are the numbers used to multiply the digital signal to set the signal gain, where the number 32767 represents full on. These are the same values used in the DOWNLOAD GAIN TABLE command.

The equivalent gain in decibels can be calculated as:

   gain = 20 * log (table_value / 32767)
 
GET REJECTED MSG  Get rejected message from AudioBox 
  type: SCSI-only  

Incoming MIDI command messages received via MIDI or SCSI are rejected by the AudioBox for the following reasons:

  1. The message is the wrong length or contains invalid data (an "invalid message").
  2. The message is apparently not directed to the AudioBox (an "address mismatch"). This can be because the MIDI message:
    1. is a MIDI Show Control message and the device ID does not match (see SET DEVICE ID)
    2. is a system exclusive message and the manufacturer's subID does not match
    3. is a system exclusive message and the destination ID does not match
    4. is not a system exclusive message and is not a continuous controller message
    5. is a continuous controller message, but the controller is not assigned (see ASSIGN CONTROLLER)

Normally, rejected messages are bit-bucketted. For diagnostic purposes, it is possible to have the AudioBox queue rejected messages for retrieval via this command (firmware versions T224 or V663 and newer). It is necessary to first put the AudioBox into "queue rejected messages" mode with a special form of this command (see below). When the AudioBox is booted, "queue rejected messages" mode is disabled. NOTE that in "queue rejected messages" mode, incoming rejected messages occupy message buffers until retrieved, increasing the likelihood of buffer exhaustion. When in "queue rejected messages" mode, the AudioBox places rejected messages into either an "invalid message" queue or an "address mismatch" queue.

Rejected messages are retrieved from the AudioBox using the Command Descriptor Block (CDB) below, which contains the AudioBox-specific GET REJECTED MSG operation code. This operation code is within the range (defined in the SCSI Specification) of vendor unique operation codes. The CDB for this command has the following general form when used with the AudioBox:

byte
num	data	description
0	DCH	AudioBox-specific GET REJECTED MSG operation code
1	00H	reserved
2	rr 	request code
3	tt	 allocation length, most significant byte
4	tt	 allocation length, least significant byte
5	00H	flag and link fields = 0
 
Request codes:
00    disable "queue rejected messages" mode
01    enable "queue rejected messages" mode
03    get next message from "address mismatch" queue
05    get next message from "invalid message" queue

During the data phase of the GET REJECTED MSG transaction, the AudioBox will send exactly the number of bytes specified in the allocation length in the command descriptor block. The allocation length should be large enough to contain the largest command expected. Currently, the longest AudioBox command is 106 bytes. An allocation length of 128 bytes or more is recommended. The data block returned from the AudioBox will contain the exact sequence of bytes that was sent via MIDI or SCSI, followed by zero bytes as required to fill the allocation length block. Messages are returned in the order in which they were received. When a message is retrieved, the message buffer it was occupying is returned to the free buffer pool. If there are no rejected messages queued when a GET REJECTED MSG command is issued to the AudioBox, and when the request code is 00 or 01, the data block will be all zero bytes. When the "queue rejected messages" mode is disabled, all queued rejected messages, if any, are returned to the free buffer pool.

SETUP STORE     Set up file send to AudioBox
  type: SCSI-only  

SETUP STORE begins the sequence of sending an audio selection or show file to the internal disk drive via SCSI.

During the data phase of the SETUP STORE transaction, the AudioBox will send exactly 1 byte of data, a response code, to the host, indicating that the audio file transfer may now proceed, or that there is a reason that the transfer cannot proceed. If the response is positive, the audio selection or show file is then transferred via a set of SEND FILE transactions. Files must not be sent until a positive response code is received. A file transfer sequence may be canceled by sending a SETUP STORE transaction with a zero selection/show number. If a file transfer sequence is canceled, the selection or show number specified is erased. Valid audio selection numbers range from 1 to 511. Valid show numbers range from 1 to 127.

All playback and show controller activity is suspended temporarily while a file transfer is in progress.

The operation code for the SETUP STORE command is within the range of vendor unique operation codes defined in the SCSI Specification. The command descriptor block for this command has the following form when used with the AudioBox:

byte
num	data	description
0       E0H      AudioBox-specific SETUP STORE operation code
1       00H      reserved
2       ss       selection/show number MSB
3       ss       selection/show number LSB
4       tt       block count MSB (entire transfer)
5       tt       block count
6       tt       block count
7       tt       block count LSB
8       ff       file type: 00H: audio file, 01H: show file
9       00H      flag and link fields = 0
 
The response code returned will be one of:
 
   01H: OK to proceed with file send (positive response)
   02H: Playback is in progress
   03H: Another file send is in progress
   04H: Not enough free space on disk until disk is defragmented
   05H: Not enough free space on disk even if disk were defragmented
   06H: invalid selection/show number (greater than maximum audio selection/127)
   07H: transfer sequence canceled
   08H: disk drive spinning up
   09H: disk drive not ready
 
SEND FILE   Send file to AudioBox
  type: SCSI-only  

The process of transferring an audio selection or a show file to the AudioBox beings with a SETUP STORE SCSI transaction, described above. Only after getting a positive response code back from the AudioBox is the SCSI command SEND FILE, described in this section, available for use.

Audio or show data is sent over the SCSI bus with the AudioBox-specific SCSI command, SEND FILE. The operation code for this command is within the range of vendor unique operation codes defined in the SCSI Specification. The command descriptor block for this command has the following form when used with the AudioBox:

byte
num	data	description
0	CEH	AudioBox-specific SEND FILE operation code
1	00H	reserved
2	ff	 file and transfer type bits
3	tt 	block count MSB (this transaction) (512 byte blocks)
4	tt 	block count LSB (this transaction)
5	00H	flag and link fields = 0
 
   ff: file and transfer type bits
   bit 0: file type: 0: audio file, 1: show file
   bit 1: transfer type: 0: programmed I/O, 1: DMA 
   bit 2: longword DMA: 0: off, 1: on 

In the data phase of the SCSI transaction, the audio data or show file is sent sequentially over the SCSI bus from the host computer to the AudioBox. Faster DMA transfers are available only with model AB1616 AudioBoxes running firmware T240 and higher. The transfers type bit is ignored by all model 1616HD AudioBoxes, and by model AB1616 AudioBoxes running firmware T239 and earlier. The 'longword DMA' is faster still, but does not work with all host computers (e.g. does not work on PCs running ABEdit). The maximum number of blocks that can be sent in one SEND FILE SCSI transaction is 32767 (16.78M bytes) when using the programmed I/O transfer type, and 127 (65024 bytes) when using the DMA transfer type. If the file size in blocks is larger than the maximum number of blocks per transaction, the file must be sent using more than one SEND FILE SCSI transaction.

The SEND FILE process will not complete until all of the blocks have been transferred (or the SEND FILE process is canceled by sending a SETUP STORE command with a zero selection number). The number of bytes sent must fill an integer number of 512-byte blocks, the number specified in the SETUP STORE command that began the transfer process. The sending software must zero-pad the last block if the length of the file being sent does not fill an integer number of 512-byte blocks.

All playback and show controller activity is suspended temporarily while a file transfer is in progress.

Audio File Transfers

Audio data is sent as a stream of 16-bit words, with the most significant byte of the word first. Audio data sent to the AudioBox must conform to the following requirements:

The AudioBox audio transfer programs will not transfer files to the AudioBox that do not meet these requirements. Numerous audio file conversion utilities exist to convert files to the required format.

GET DISK STATE   Get state data from AudioBox
  type: SCSI-only  

Current disk state information can be obtained from the AudioBox using the Command Descriptor Block (CDB) below, which contains the AudioBox-specific GET DISK STATE operation code. This operation code is within the range (defined in the SCSI Specification) of vendor unique operation codes. The CDB for this command has the following general form when used with the AudioBox:

byte
num	data	description
0	C5H	AudioBox-specific GET DISK STATE operation code
1	00H	reserved
2	00H	unused
3	00H	unused
4	00H	unused
5	00H	flag and link fields = 0

During the data phase of the GET DISK STATE transaction, the AudioBox will send exactly 32 bytes of data to the host, formatted as follows:

struct abdiskstate {
   char diskEnable;    //playback system is enabled; ready for playback
   char playbackActive;//one or more channels are playing back
   char dirError;      //error occured on last directory verify;
                       //one or more files were erased
   char transferActive;//audio or show file transfer is in progress
   char eraseActive;   //audio or show file erasure is in progress
   char defragActive;  //disk defragment is in progress
   char formatActive;  //disk format operation is in progress
   char dirClrActive;  //clear directory is in progress (CLEAR DATA)
   long defragMarker;  //defragment marker (for progress indicator)
   long defragEnd;     //defragment endpoint (for progress indicator)
   char transferRate;  //hard disk transfer rate above maximum (zero = OK)
   char defaultShow;   //default show number
   char MIDIchannel;   //assigned MIDI channel (FFH: all channels)
   char allOffActions; //MSC ALL_OFF action flags
   char MotorMixActive;//MotorMix interface has been activated
   char deviceID;      //AudioBox device ID
   char resetActions1;  //MSC RESET action flags, byte 1
   char resetActions2;  //MSC RESET action flags, byte 2
   short GPItrigLockout; //GPI trigger lockout time in milliseconds
   char GPIplbkTrigMode; //GPI playback trigger mode
   char unused[5];      //unused
   }

The following fields are flag bytes; 0 indicates false and non-zero indicates true: diskEnable, playbackActive, dirError, transferActive, eraseActive, defragActive, formatActive, dirClrActive and MotorMixActive.

Just before the disk directory is updated to disk, a verification routine is run. If an error is detected in the directory structure, one or more files are erased to eliminate the error, and the dirError flag is set. The flag is reset the next time the disk directory is updated without error. The disk directory is updated whenever a file transfer to the AudioBox, a file erase or a disk defragment command is performed.

The defragMarker longword can be used to display defragment status. When a defragment is in progress (defragActive true), the defragment completion ratio is defragMarker / defragEnd. Note that the bytes within the longword are sent most significant byte first, as is the convention over SCSI.

The transferRate parameter is zero if the disk drive in the AB1616 is fast enough to support 16 channel playback. (This parameter is always zero from an AudioBox 1616HD.) A positive number is an indication of how much the disk drive's transfer rate is above the maximum allowable rate (in 4 nanosecond increments).

The default show number is returned in defaultShow. See SET DEFAULT SHOW.

The current MIDI channel setting is returned in MIDIchannel. See SET MIDI CHANNEL.

The current ALL_OFF action flags are returned in allOffActions. See SET ALL_OFF ACTIONS.Bit 7 is used to report the state of the ALL_OFF lock. The ALL_OFF lock is set when an ALL_OFF command is received, and prevents a subsequent ALL_OFF command from overwriting the state information saved by the first ALL_OFF command. The ALL_OFF lock is cleared by the receipt of a RESTORE command, or any MSC type command.

GPItrigLockout and GPIplbkTrigMode are set by the SET GPI command.

GET DIRECTORIES   Get directory data from AudioBox
  type: SCSI-only  

The complete audio and show file directories can be obtained from the AudioBox using the Command Descriptor Block (CDB) below, which contains the AudioBox-specific GET DIRECTORIES operation code. This operation code is within the range (defined in the SCSI Specification) of vendor unique operation codes. The CDB for this command has the following general form when used with the AudioBox:

byte
num	data	description
0	CFH	AudioBox-specific GET DIRECTORIES operation code
1	00H	reserved
2	00H	unused
3	00H	unused
4	00H	unused
5	00H	flag and link fields = 0

GET DIRECTORIES is a SCSI-only form of the GET SHOW and GET SELECTION commands. It is provided to reduce the overhead in getting directory data via SCSI. Only one transaction is required, whereas using the GET SHOW and GET SELECTION commands requires a SCSI transaction to send the command and another transaction to retrieve the response for each directory entry. During the data phase of the GET DIRECTORIES transaction, the AudioBox will send exactly 2572 bytes of data to the host, formatted as follows:

struct abdirectory {
   long diskCapacity;     //total capacity of the disk in blocks
   long nowfreeBlks;      //number of blocks now free on the disk
   long freeBlocks;       //number of blocks free after defragmentation
   long audioEntries[512];//array of audio selection entries
   long showEntries[128]; //array of show file entries
   }

Following the first three fields are two arrays of directory entries, one for audio selections and one for show files. The audio selection number is the index into the audioEntries array. The show file number is the index into the showEntries array. For both arrays, the longword specifies the number of blocks of data in the selection/file for that directory entry. An unused entry is indicated by a zero block length. Note that the bytes within the longword are sent most significant byte first, as is the convention over SCSI.

Note that file names, modification dates, etc. are retrieved using GET FILEDATA.

GET EXTENDED DIRECTORIES   Get extended range directory data from AudioBox
  type: SCSI-only  

Note: this command is available in T258 firmware and above.

The audio and show file directories can be obtained from the AudioBox using the Command Descriptor Block (CDB) below, which contains the AudioBox-specific GET EXTENDED DIRECTORIES operation code. This operation code is within the range (defined in the SCSI Specification) of vendor unique operation codes. The CDB for this command has the following general form when used with the AudioBox:

byte
num	data	description
0	CAH	AudioBox-specific GET EXTENDED DIRECTORIES operation code
1	00H	reserved
2	00H	unused
3	00H	unused
4	00H	unused
5	00H	flag and link fields = 0

The GET EXTENDED DIRECTORIES command returns the following structure:

struct abdirExt {
   long diskCapacity;     //total capacity of the disk in blocks
   long nowfreeBlks;      //number of blocks now free on the disk
   long freeBlocks;       //number of blocks free after defragmentation
   long highestSelNum;    //highest selection number in use
   long showEntries[128]; //array of show file entries 0..127
   long audioEntries[8064];//array of audio selection entries 0..8063
}

Following the first four fields are two arrays of directory entries, one for show files and one for audio selections. (The zero entries are unused; selection and show numbers start at 1.) The show file number is the index into the showEntries array. The audio selection number is the index into the audioEntries array. For both arrays, the longword specifies the number of blocks of data in the selection/file for that directory entry. An unused entry is indicated by a zero block length. Note that the bytes within the longword are sent most significant byte first, as is the convention over SCSI.

During the data phase of the GET EXTENDED DIRECTORIES transaction, the AudioBox will send the entire abdirExt structure, exactly (4+128+8064)*4 = 32784 bytes of data.

Note that file names, modification dates, etc. are retrieved using GET FILEDATA or GET EXTENDED FILEDATA.

SET FILEDATA      Set file name and related data
  type: SCSI-only

A file data structure containing file name, modification date, etc. can be stored on the AudioBox internal disk drive for each audio selection and each show file. The entire array of structures can be retrieved with the GET FILEDATA or GET EXTENDED FILEDATA command.

An audio or show file name / modification date structure is sent over the SCSI bus with the AudioBox-specific SCSI command, SET FILEDATA. The operation code for this command is within the range of vendor unique operation codes defined in the SCSI Specification. The command descriptor block for this command has the following form when used with the AudioBox:

byte
num	data	description
0	C6H	AudioBox-specific SET FILEDATA operation code
1	00H	reserved
2     ss      selection/show number MSB
3     ss      selection/show number LSB
4	ff	 file type: 00H: audio file, 01H: show file
5	00H	flag and link fields = 0

During the data phase of the SET FILEDATA transaction, a file data structure, as specified below, is sent to the AudioBox. The structure is exactly 256 bytes, formatted as follows:

struct abfiledata {
   char filedesc[32]; //selection/show description string
   ulong trDate; //transfer date/time (seconds since May 30, 1997, 3:00 AM)
   char flags;   //see flag bit definitions below
   char reserved[11];  //reserved for future definition
   ulong srcFileSize;  //source file size in bytes
   ulong modDate; //source file last modification date/time
                 // (seconds since May 30, 1997, 3:00 AM)
   char srcFileName[200];  //source file name
   }
   flags byte:
   bit
    0     Archived (control software has backed up file)
    1     Locked (control software will issue warning prior to delete)
    2..7  currently undefined, reserved

The srcFileName string contains the file name, optionally prefixed with path information that can be used to locate the source file on the host computer disk drive. The srcFileName string is null-terminated, not containing the following characters: forward slash /, back slash \, colon :, asterisk *, question mark ?, quote ", less-than <, greater-than >, vertical bar |. Use of the filedesc field is unrestricted. The transfer and modification date/time longwords are in seconds since May 30, 1997, 3:00 AM (the AudioBox date/time of birth).

All playback and show controller activity is suspended temporarily while the SET FILEDATA command is in progress.

GET FILEDATA      Get file name and related data from AudioBox
  type: SCSI-only  

The current array of file data can be retrieved from the AudioBox with the GET FILEDATA command. The operation code for this command is within the range of vendor unique operation codes defined in the SCSI Specification. The command descriptor block for this command has the following form when used with the AudioBox:

byte
num	data	description
0	C7H	AudioBox-specific GET FILEDATA operation code
1	00H	reserved
2	ss 	segment, 0 for entire structure, or 1 - 4 for segment
3	00H	unused
4	00H	unused
5	00H	flag and link fields = 0
 
struct abfilearray {
   struct abfiledata audioNames[512]; //array: audio selection ident. data
   struct abfiledata showNames[128]; //array: show file identification data
}

In the data phase of the SCSI transaction, the structure abfilearray (see SET FILEDATA above), or a portion of it, is sent over the SCSI bus from the AudioBox to the host computer. If the segment number is zero, the entire structure, exactly 163,840 ((512+128)*256) bytes, is sent in one SCSI transaction. If the segment number is 1 through 4, a one-quarter segment of the structure is sent, exactly 40,960 bytes. The zero-index entries in both arrays are unused.

All playback and show controller activity is suspended temporarily while the GET FILEDATA command is in progress.

Data returned is exactly the same 256-byte block that was set by the most recent SET FILEDATA. Data returned is valid only if the selection/show number is known to be in use. If a selection has been erased, for example, GET FILEDATA will return the data for the erased file.To determine if an entry is in use, do a GET DIRECTORIES or GET EXTENDED DIRECTORIES command. A zero block length indicates an unused selection/show number.

GET EXTENDED FILEDATA      Get extended range file data from AudioBox
  type: SCSI-only  

Note: this command is available in T258 firmware and above.

The current array of file data can be retrieved from the AudioBox with the GET FILEDATA command. The operation code for this command is within the range of vendor unique operation codes defined in the SCSI Specification. The command descriptor block for this command has the following form when used with the AudioBox:

byte
num	data	description
0	C8H	AudioBox-specific GET EXTENDED FILEDATA operation code
1	00H	reserved
2	ss 	segment number 0..63
3	00H	unused
4	00H	unused
5	00H	flag and link fields = 0
 
struct abfilearrayExt {
   struct abfiledata showNames[128]; //array: show file data
   struct abfiledata audioNames[8064]; //array: audio selection data
}

Data returned for each selection/show entry is exactly the same 256-byte block that was set by the most recent SET FILEDATA. Data returned is valid only if the selection/show number is known to be in use. If a selection has been erased, for example, GET FILEDATA will return the data for the erased file.To determine if an entry is in use, do a GET DIRECTORIES or GET EXTENDED DIRECTORIES command. A zero block length indicates an unused selection/show number.

In the data phase of the SCSI transaction, a portion of the structure abfilearrayExt containing 128 abfiledata structures is sent over the SCSI bus from the AudioBox to the host computer, exactly 128 * 256 = 32768 bytes. (For definition of abfiledata, see SET FILEDATA above). Segment number 0 returns the showNames array. Segment number 1 returns the first 128 entries in the audioNames array, segment number 2 returns the second 128 entries, etc.

The highestSelNum field in the GET EXTENDED DIRECTORIES command can be used to limit the number of segments that need to be retrieved to get all of the file data currently in use.

All playback and show controller activity is suspended temporarily while the GET FILEDATA command is in progress.

GET FILE        Retrieve audio or show file from AudioBox drive
  type: SCSI-only  

Audio selection and show files stored on the AudioBox can be retrieved using the SCSI command GET FILE, described in this section. The operation code for this command is within the range of vendor unique operation codes defined in the SCSI Specification. The command descriptor block (CDB) for this command has the following form when used with the AudioBox (NOTE that this is a 12 byte CDB):

byte
num	data	description
0       C1H      AudioBox-specific GET FILE operation code
1       00H      reserved
2       ss       selection/show number MSB
3       ss       selection/show number LSB
4       sb       starting block MSB
5       sb       starting block
6       sb       starting block
7       sb       starting block LSB
8       tl       transfer length MSB (blocks)
9       tl       transfer length LSB (blocks)
10      ff       file type: 00H: audio file, 01H: show file
11      00H      flag and link fields = 0

In the data phase of the SCSI transaction, the requested portion of the audio data or show file is sent sequentially over the SCSI bus from the AudioBox to the host computer, starting with the specified starting block. The blocks in the file are numbered from 0 to n - 1, where n is the number of blocks in the file. The AudioBox will send either the number of blocks requested in the transfer length field of the CDB or the number of blocks between the starting block specified in the CDB and the last block of the file (inclusive), whichever is less.

The maximum number of blocks that can be sent in one GET FILE transaction is 32767 (16.78M bytes). This limit is imposed by the SCSI controller used in the AudioBox. The exact number of blocks in a file on the AudioBox can be determined using a GET DIRECTORIES or GET EXTENDED DIRECTORIES command.

All playback and show controller activity is suspended temporarily while the GET FILE command is in progress.

There is no translation involved in sending or retrieving show files. If the same sequence of disk blocks that are sent by the GET FILE command are written to a disk file on a host computer, a valid AudioBox-format show file results.

When sent to the AudioBox, audio data is translated by the file transfer programs from various audio file formats (i.e. .WAV and AIFF) to a stream of 16-bit words, with the most significant byte of the word first. (see SEND FILE). The GET FILE command returns the same data stream that was sent when the file was transferred. It is up to the program doing the file retrieval to put the data into the desired audio file format.

ERASE FILE   Erase file on AudioBox drive
  type: SCSI-only  

ERASE FILE removes an audio selection or show file from the internal disk drive. This command is available in firmware versions T224 or V663 and newer. During the data phase of the ERASE FILE transaction, the AudioBox will send exactly 1 byte of data, a response code, to the host. Valid audio selection numbers range from 1 to 511. Valid show numbers range from 1 to 127.

(Note: due to command sequencing restrictions, the MIDI versions of this command, ERASE SELECTION and ERASE SHOW are no longer recommended. There are no command sequencing restrictions with the ERASE FILE command.)

The operation code for the ERASE FILE command is within the range of vendor unique operation codes defined in the SCSI Specification. The command descriptor block for this command has the following form when used with the AudioBox:

byte
num   data	description
0     DFH      AudioBox-specific ERASE FILE operation code
1	00H	 reserved
2     ss       selection/show number MSB
3     ss       selection/show number LSB
4     ff       file type: 00H: audio file, 01H: show file
5	00H	 flag and link fields = 0
 
The response code returned will be one of:
 
   01H: erase completed normally
   02H: selection/show number already erased
   03H: invalid selection/show number (greater than 511/127)
   04H: internal disk error
 

ERASE FILE marks the specified audio selection or show file as no longer in use. The file erased has zero length until rewritten. The file data is unaffected by this command (see SET FILEDATA, GET FILEDATA). If the file erased is at the top of the used disk space, the freed space is added to the free space available for new show and audio files. Otherwise, the disk space used by the file is unusable until recovered (added to the available free space) when the disk is defragmented, or until the same selection/show number is rewritten by a new file the same size or smaller than the original file.

All playback and show controller activity is suspended temporarily while the ERASE FILE command is in progress.


Section 11: Ethernet Implementation (AB64 only)

The AB64 model includes an ethernet port for communications with the host computer. (This model does not have a SCSI port.) This section documents commands that can only be sent via ethernet. All other commands in the AudioBox command set can also be sent via ethernet, except commands specifically labeled MIDI-only or SCSI-only (see MIDI-formatted commands, below).

Messages are transferred using the UDP protocol. Commands are sent to the AB64 via ethernet in the data portion of a UDP packet. All messages are sent to port number D758H. One or more commands may be sent per packet, packed sequentially into the data portion of the packet. Packets are limited to 1514 bytes by ethernet standards. Words and longwords in the ethernet-only commands in this section are formatted in big-endian byte order (the same as the SCSI-only commands).

Each command sent to an AudioBox in an ethernet packet is prefixed with an ethernet command header. This header is a four-byte structure, with optional data following:

struct enetDataHdr {
   short code;           //see command definitions below
   short length;         //command length including this header
}

For example, a GET XPT LEVELS EN command is formatted:

   short code: 7100H
   short length: 8
   long startOutChannel; //section of matrix desired 

Similarly, when data structures are returned by the AudioBox in response to 'GET' commands, the data structures are prefixed with a header, using the same code to identify the data. The length field contains the size of the data structure that immediately follows (including the 4-byte header).

For example, a GET XPT LEVELS EN response is structured:

   short code: 7100H
   short length: 1032
   long startOutChannel;
   char xptLev[16][64]; //[output][input]

In general, more than one command can be sent to the AudioBox in one packet. (A few commands, e.g. SEND FILE EN, are restricted to one command per packet; this is clearly indicated in the command descriptions, below.) When the commands generate replies (i.e. 'GET' commands), the replies are packed into the returned packet in the same order as the commands. If the list of commands in a packet generates more data than will fit into one ethernet packet, the AudioBox sends the data in more than one packet. Returned packets contain complete data structures only, i.e. data structures are not split between packets. In this case, because UDP does not guarantee that packets will arrive in the order they are sent, it is possible data may not arrive in the same order as requested in the command packet. Because data is always identified by its header, this need not create difficulty. Within packets the data structures are returned in the same order as the commands.

The ethernet-only commands in this section are designed to provide all data needed by an AudioBox control application. Although it is possible to send over ethernet a MIDI-formatted command that generates a response (e.g. QUERY VERSION), the response will be transmitted over MIDI. The 'QUERY' commands are intended primarily for use by MIDI-based hosts.

MIDI-formatted commands

MIDI-formatted commands are MSC commands, sysex commands and MIDI continuous controller messages. These commands may be sent to the AudioBox via ethernet prefixed with a MIDIMSG header:

   code: 8000H
   length: n

The MIDI command string immediately follows the header. Every individual MIDI command must have its own header, but there can be multiple MIDI commands (each prefixed with a header) in a packet. The length field contains the length of the MIDI string that follows, plus 4 (the length of the header). If the length of the MIDI string is odd, a null padding byte is added to preserve word alignment. In other words, the length field is always an even number. MIDI-formatted commands may be interspersed with other command types in an ethernet command packet. No data is returned from the AudioBox via ethernet in response to a MIDI-formatted command.

For example, a SET MATRIX command to zero the matrix, including the header and padding, looks like this:

   80H 00H 00H 10H F0H 7FH 7FH 02H 10H 06H 00H 16H 00H 00H F7H 00H

Discovering AudioBoxes on a Local Area Network

To initiate computer-to-AudioBox communication via ethernet, control software can broadcast a packet to the AudioBox UDP port (D758H) containing an INQUIRY EN command. (No other commands should be broadcast.) All AudioBoxes on the local area network reply with a INQUIRY EN response packet, which contains the IP address, model number and serial number of the AudioBox. From then on, messages are unicast to a particular AudioBox IP address (and always to the UDP port D758H). Based on the replies received, control software can provide to the user a list of AudioBoxes to choose from that are currently available for communication. An INQUIRY EN broadcast would normally be done when a control program boots up, but may also be done subsequently, when initiated by the user, to keep the AudioBox list up to date when AudioBoxes are added or removed from the local area network.

Automatic Data Updating

The AB64 includes an automatic data updating facility. A control program registers the set of data it wants to maintain with the Audiobox, and the AudioBox sends updates of this data whenever the data changes. This simplifies the task of keeping AudioBox data up-to-data in the control program and minimizes the network traffic required to do so. See the SET AUTO UPDATE EN command.

INQUIRY EN    Returns general unit data
type: Ethernet-only  
   short code: 6EA7H
   short length: 4

The following data structure is sent from the AudioBox:

   short code: 6EA7H
   short length: 96
   long IPaddress;         //IP address
   short inChannels;       //number of input channels (0, 16, 32, 48, or 64)
   short outChannels;      //number of output channels (0, 16, 32, 48, or 64)
   char manufacturer[8];   //"HARMONIC"
   char product[16];       //e.g. "AB64 AudioBox   "
   char version[4];        //e.g. "A416"
   char assemblyDate[8];   //e.g. "03/09/21" (year/month/day format)
   char assemblyTime[8];   //e.g. "15:34:22" (24 hour format)
   char serialNumber[8];   //e.g. "33021001"
   char unitName[32];      //unit name string, see SET UNIT NAME

In the AB64, inChannels will always equal outChannels.

GET STATS EN   Returns current device statistics
type: Ethernet-only  
   short code: 6F00H
   short length: 4

The following data structure is sent from the AudioBox:

   short code: 6F00H
   short length: 112
   long freeBuffers;    //number of input buffers currently free
   long lowWaterMark;   //lowest number of free input buffers since startup
   long timerEntries;   //tasks waiting on the timer queue
   long workEntries;    //tasks waiting for CPU 
   long MIDI0entries;   //MIDI strings on MIDI port 0 transmit queue
   long MIDI1entries;   //MIDI strings on MIDI port 1 transmit queue 
   long currentTime;    //AudioBox millisecond clock
   long cpuUtilization; //CPU utilization in percent
   long enetmsgs;       //messages received via ethernet
   long enetmsgsOK;     //good messages received via ethernet
   long enetmsgsBAD;    //bad messages received via ethernet
   long MIDI0rxmsgs;    //messages received via MIDI port 0
   long MIDI0msgsOK;    //good messages received via MIDI port 0
   long MIDI0msgsBAD;   //bad messages received via MIDI port 0
   long MIDI1rxmsgs;    //messages received via MIDI port 1
   long MIDI1msgsOK;    //good messages received via MIDI port 1
   long MIDI1msgsBAD;   //bad messages received via MIDI port1
   long MIDI0txmsgs;    //messages transmitted via MIDI port 0
   long MIDI1txmsgs;    //messages transmitted via MIDI port 1
   long temperature;    //AB64 interior temperature in degrees celsius
   char unused[28];     //reserved
 

All commands received by the AudioBox, whether sent to a valid AudioBox device ID or not, are counted as commands received. A "bad" command is one in which the device ID is valid, but the command is invalid, the data is out-of-range or the length is incorrect. A "good" command is one that has been validated and performed by the AudioBox.

Note that the bytes within the longword are sent most significant byte first (big-endian).

 
GET DISK STATE EN   Get state data from AudioBox
type: Ethernet-only  
   short code: 7700H
   short length: 4

The following data structure is sent from the AudioBox:

   short code: 7700H
   short length: 120
   char diskEnable;    //playback system is enabled; ready for playback
   char playbackActive;//one or more channels are playing back
   char dirError;      //error occurred on last directory verify;
                       //one or more files were erased
   char transferActive;//audio or show file transfer is in progress
   char eraseActive;   //audio or show file erasure is in progress
   char defragActive;  //disk defragment is in progress
   char formatActive;  //disk format operation is in progress
   char dirClrActive;  //clear directory is in progress (CLEAR DATA)
   char MotorMixActive;//MotorMix interface has been activated
   char AllOffLock;    //ALLOFF lock
   char unused1;       //reserved  
   char audioMode;     //see MULTICHANNEL RECORD & PLAYBACK
   long diskCapacity;  //total file capacity of the disk in blocks 
   long nowfreeBlks;   //number of blocks now free on the disk 
   long freeBlocks;    //number of blocks free after defragmentation 
   long highestSelNum; //highest selection number in use    
   long defragMarker;  //defragment marker (for progress indicator)
   long defragEnd;     //defragment endpoint (for progress indicator)
   long highestShNum;   //highest show number in use
   char GPOState;       //state of GPO outputs, bit 0: GPO 1, bit 1: GPO 2
   char autoConfIP;     //using auto-configured IP address
   char slaveDisk;      //0: using master/primary disk, 1: using slave/secondary disk 
   char MIDItestResult; // bit 0: MIDI port 1 test OK, bit 1: MIDI port 2 test OK
   char disksEqual;     //primary/secondary disk contents: 0: not identical, 1: identical 
   char copyActive;     //copy disk operation in progress COPY DRIVE
   unsigned char copyProg;  //copy disk operation progress (0..255)
   char inputsWithDelay; //number of inputs with delay allocated
   long delayAlloc;     //samples of delay allocated per input
   char unused4[16];    //reserved
   char MIDIID;        //MIDI device ID
   char MIDIchannel;   //assigned MIDI channel (FFH: all channels)
   short MIDIgroupIDs; //MIDI group IDs assigned (0: assigned)
   char defaultShow;   //default show number
   char allOffActions; //MSC ALL_OFF action flags
   char resetActions1; //MSC RESET action flags, byte 1
   char resetActions2; //MSC RESET action flags, byte 2
   char submasterGain; //current submaster gain setting
   char submasterZero; //current submaster zero setting
   char fixedIP;       // set if fixed IP is in use
   char GPIplbkTrigMode; //GPI playback trigger mode
   long GPItrigLockout; //GPI trigger lockout time in milliseconds
   char unused2[32];   //reserved  

The following fields are flag bytes; 0 indicates false and non-zero indicates true: diskEnable, playbackActive, dirError, transferActive, eraseActive, defragActive, formatActive, dirClrActive, MotorMixActive, AllOffLock, autoConfIP, disksEqual and copyActive.

Just before the disk directory is updated to disk, a verification routine is run. If an error is detected in the directory structure, one or more files are erased to eliminate the error, and the dirError flag is set. The flag is reset the next time the disk directory is updated without error. The disk directory is updated whenever a file transfer to the AudioBox, a file erase or a disk defragment command is performed.

The defragMarker longword can be used to display defragment status. When a defragment is in progress (defragActive true), the defragment completion ratio is defragMarker / defragEnd.

The default show number is returned in defaultShow. See SET DEFAULT SHOW.

The MIDItestResult byte is used in testing the AB64 MIDI port hardware. During firmware boot, a MIDI test message (sysex is sent on each port. If the same message is received, the bit for that port is set in the MIDItestResult byte. For this test to work, a MIDI cable must be plugged from the MIDI OUT connector to the MIDI IN connector on each port.

The current MIDI channel setting is returned in MIDIchannel. See SET MIDI CHANNEL.

The current ALL_OFF action flags are returned in allOffActions. See SET ALL_OFF ACTIONS. The ALL_OFF lock is non-zero when an ALL_OFF command is received, and prevents a subsequent ALL_OFF command from overwriting the state information saved by the first ALL_OFF command. The ALL_OFF lock is cleared by the receipt of a RESTORE command, or any MSC type command.

GPItrigLockout and GPIplbkTrigMode are set by the SET GPI command.

GET DISK INFO EN   Get disk drive information from AudioBox
type: Ethernet-only  
   short code: 6500H
   short length: 4
 
AB64 Interface: getDiskInfo();

Note: this information is static following AB64 initialization. This data is therefore not included as data that can be returned via auto update. This information is sent by the AB64 only in response to a GET DISK INFO EN message.

The following data structure is sent from the AudioBox. Information for the master disk is in diskinfo[0], information for the slave disk is in diskinfo[1]:

	short code: 6500H
	short length: 1092
	struct ab64DiskInfo diskinfo[2];	//master disk info is in diskinfo[0], slave 

The following data structure holds data for one disk drive, either master or slave:

   struct ab64DiskInfo {
	short reserved1[3];
	short errorNumber;           //AB64 disk error number, if error during disk initialization
	char ready1;                 //disk is ready to read and write
	char ready2;                 //AB64 internal use
	short resetDiagnosticCode;   //ATA spec, table 23
	unsigned short capacityHi;   //disk capacity (copied from capacityHighWord)
	unsigned short capacityLo;   //disk capacity (copied from capacityLowWord)
	char use28bitAdrs;           //drives uses older 28 bit addressing
	char unused2[15];
	short general;			//remainder of structure is exactly as read from
	short cylinders;             //disk via ATA IDENTIFY DEVICE command
	short specificConfig;        //see ATA spec for field descriptions
	short heads;
	short retired1[2];
	short sectorsPerTrack;
	short reserved2[3];
	char serialNumber[20];
	short retired3[2];
	short obsolete1;
	char firmwareRevision[8];
	char model[40];
	short sectorsPerMultCmd;
	short reserved3;
	short capabilities1;
	short capabilities2;
	short obsolete2[2];
	short validBits;
	short currentCylinders;
	short currentHeads;
	short currentSectorsPerTrack;
	unsigned short capacityLowWord;
	unsigned short capacityHighWord;
	short sectorsPerInterrupt;
	unsigned short addressableSectorsLowWord;
	unsigned short addressableSectorsHighWord;
	short obsolete3;
	short DMAmode;
	short PIOModes;
	short minDMAcycle;
	short recommendDMAcycle;
	short minPIOwithoutFC;
	short minPIOwithFC;
	short reserved4[6];
	short queueDepth;
	short reserved5[4];
	short majorVersion;
	short minorVersion;
	short cmdSetSupportedBits1;
	short cmdSetSupportedBits2;
	short cmdSetSupportedBits3;
	short cmdSetEnabledBits1;
	short cmdSetEnabledBits2;
	short cmdSetEnabledBits3;
	short ultraModes;
	short securityEraseTime;
	short enhancedSecurityEraseTime;
	short advancedPowerManValue;
	short masterPasswordRevCode;
	unsigned short hardwareResetResult;
	short acousticManValue;
	short reserved6[5];
	unsigned short maxLBA48word1;
	unsigned short maxLBA48word2;
	unsigned short maxLBA48word3;
	unsigned short maxLBA48word4;
	short reserved7[152];
	};

 

GET VU EN  Returns current audio levels
type: Ethernet-only
   short code: 7000H
   short length: 4

The following data structure is sent from the AudioBox:

   short code: 7000H
   short length: 132
   char inputVU[64];
   char outputVU[64];

The VU value sent is in dBu as seen at the input or output connectors of the AudioBox, biased up by 100, so that, for example, a -20 dBu signal is reported as 80 (50H), a 0 dBu signal is reported as 100 decimal (64H), and a full-scale input of 20 dBu is reported as 120 decimal (78H), etc. Reported values greater than 120 decimal indicate clipping; the maximum value reported is 124 decimals (7CH).

GET IO LEVELS EN  Returns current source, input and output gain levels
type: Ethernet-only
   short code: 6800H
   short length: 4

The following data structure is sent from the AudioBox:

   short code: 6800H
   short length: 324
   char analogSrcLev[64];
   char digitalSrcLev[64];
   char playbackSrcLev[64];
   char inputLev[64];
   char outputLev[64];

GET IO LEVELS EN returns the current source, input and output gain levels. The input and output gain levels returned are live gain levels, which may differ from the last set (target) gain levels when ramps are ongoing. Source, input and output levels are always positive, 0 to 7FH.

GET XPT LEVELS EN  Returns current crosspoint gain levels
type: Ethernet-only
   short code: 7100H
   short length: 8
   long startOutChannel
 
   startOutChannel is the first output channel returned, 
   Valid values are: 0, 16, 32 or 48.

The following data structure is sent from the AudioBox:

   short code: 7100H
   short length: 1032
   long startOutChannel
   char xptLev[16][64]; //[output][input]
 

GET XPT LEVELS EN returns current crosspoint gain levels for 16 input channels. The starting output channel is specified in the command. The first byte returned is the current crosspoint gain for the specified output channel and input 0. This is followed by the gain levels for inputs 1 through 63. The next 64 bytes contain the crosspoint levels for the next output channel. In all, the crosspoint levels for 16 output channels are returned. The values returned are live gain levels, which may differ from the last set (target) gain levels when ramps are ongoing. Crosspoint levels may be positive or negative (i.e. bit 7 of the byte may be set or clear). A negative value indicates that the phase is reversed. See SET CROSSPOINT PHASE.

 
GET IO DELAY EN  Returns current input and output delay values
type: Ethernet-only
   short code: 6900H
   short length: 4

The following data structure is sent from the AudioBox:

   short code: 6900H
   short length: 644
   unsigned char inputEnable[64];
   unsigned char outputEnable[64];
   long inputDelay[64];
   long outputDelay[64];

GET IO DELAY EN returns the current input and output delay values and enable flags.Delay is enabled on a channel if the enable flag byte is non-zero. Delay values returned are in samples. The sampling rate is 48 kHz. A delay value of 48 represents a delay of one millisecond.

GET XPT DELAY EN  Returns current crosspoint delay values
type: Ethernet-only
   short code: 7200H
   short length: 8
   long startOutChannel
 
   startOutChannel is the first output channel returned, 
   Valid values are multiples of 4: 0, 4, 8, ... 60.

The following data structure is sent from the AudioBox:

   short code: 7200H
   short length: 1032
   long startOutChannel
   long xptDelay[4][64]; //[output][input]
 

GET XPT DELAY EN returns current crosspoint delay values for 4 output channels. The starting output channel is specified in the command. The first longword returned is the current crosspoint delay for the specified output channel and input 0. This is followed by the current crosspoint delay values for inputs 1 through 63. The next 64 longwords contain the crosspoint delays for the next output channel. In all, the crosspoint delays for 4 output channels are returned. The values returned are live delay values, which may differ from the last set (target) delay value when ramps are ongoing. Values returned are in samples. The sampling rate is 48 kHz. A delay value of 48 represents a delay of one millisecond.

GET LCD EN  Returns current LCD screen bitmap
type: Ethernet-only
   short code: 7C00H
   short length: 4

The following data structure is sent from the AudioBox:

   short code: 7C00H
   short length: 1028
   unsigned char screenBits[128][8]; //screen bitmap

GET LCD EN returns the bitmap currently being displayed on the LCD on the front panel of the AB64. The LCD is a graphic display 128 pixels wide by 64 pixels high. Each byte in the bitmap represents a block of eight vertical pixels, with bit 0 representing the uppermost pixel and bit 7 representing the lowest pixel in the vertical block. The first 128 bytes represent the pixels in the upper row of the LCD, with sequential bytes representing blocks of pixels from left to right. There are eight vertical rows, eight pixels vertically in each row.

GET MUTE/SOLO EN  Returns current mute/solo settings
type: Ethernet-only
   short code: 7500H
   short length: 4

The following data structure is sent from the AudioBox:

   short code: 7500H
   short length: 128
   char inputMuteSolo[64]; //input channel mute/solo settings
   char outputMuteSolo[64]; //output channel mute/solo settings
 
mute/solo byte:
      00H: channel is not muted and is not soloed
      01H: channel is muted by a MUTE command
      02H: channel is soloed
      03H: channel is muted and soloed (solo overrides)
      04H: channel is muted because another channel is soloed
      05H: channel is muted by a MUTE command and another channel is soloed

GET MUTE/SOLO EN returns current input and output channel mute and solo settings.

GET SUBMASTER EN  Returns current submaster & controller settings
type: Ethernet-only
   short code: 7600H
   short length: 4

The following data structure is sent from the AudioBox:

   short code: 7600H
   short length: 680
   short submasterGain;  //current submaster gain, see SET SUBMASTER GAIN
   short submasterZero;  //current submaster zero, see SET SUBMASTER ZERO
   char submasterLevels[32]; //current submaster levels (-128..+127)
   unsigned char submasterAssigns[32][16]; //current submaster assignment flags
   char controllerAssigns[128]; //current controller assigns
 

GET SUBMASTER EN returns current submaster and continuous controller settings. The AB64 supports 32 submasters, the same number as in other AudioBox models. Note that the submaster level returned is the level set by the last SET SUBMASTER LEVEL command or MIDI continuous controller command for the given submaster.

The submasterAssigns array contains flags indicating submaster to channel assignments. There are 16 bytes (128 flags, one bit per flag) per submaster. The least significant bit of the first byte for a given submaster contains the flag for input 0. That byte contains flags for inputs 0 through 7, the next byte for inputs 8 through 15, etc. Byte 8 contains flags for outputs 0 through 7 and byte 15, the last byte, contains flags for outputs 56 through 63. See ASSIGN SUBMASTER.

The controllerAssigns byte returned for each MIDI controller contains a submaster number or FFH if the controller is unassigned. See ASSIGN CONTROLLER.

GET SHOW EN      Get current show state data from AudioBox
type: Ethernet-only
   short code: 7400H
   short length: 4

The following data structure is sent from the AudioBox:

   short code: 7400H
   short length: 336
   unsigned short showNumber; //show number (0 = none open)
   char showName[32];         //show name (exactly as in show file)
   unsigned short numPaths;   //number of paths in the show
   unsigned short numLists;   //number of lists in the show
   unsigned char MIDIecho;    //MIDI echo flags (see SET MIDI ECHO)
   char MIDIloopback;        //boolean, 0: off, non-zero: on
   long MTCgenerator;        //current value of the MTC generator in ms
   char MTCgenFrame;         //MTC frames/sec (24, 25, 30, 0 = disabled)
   char MTCgenRunning;       //MTC generator running (non-zero: running)
   char MTCreceived;         //MTC has been received
   char listsOpen;           //number of lists open in the show controller
   char unused[28];
   struct {
      char dataValid;  //structure holds valid data, list and path are open
      char lastCueRun; //non-zero: last cue in path has been fired
      unsigned short listNumber; //list number
      unsigned short listFlags;  //list flags.
      unsigned short pathNumber; //path number
      unsigned short nCues;      //number of cues in path
      unsigned short nLiveCues;  //number of live cues in path
      unsigned long listClock;   //list clock value (milliseconds)
      unsigned long seqClock;    //sequence clock value (milliseconds)
      unsigned short lastCuenumber; //major number for last fired cue 
      unsigned char lastSub1;    //1st subsection number for last cue
      unsigned char lastSub2;    //2nd subsection number for last cue
      unsigned char lastSub3;    //3rd subsection number for last cue
      unsigned char lastSub4;    //4th subsection number for last cue
      unsigned short nextCuenumber; //major number for next cue
      unsigned char nextSub1;    //1st subsection number for next cue
      unsigned char nextSub2;    //2nd subsection number for next cue
      unsigned char nextSub3;    //3rd subsection number for next cue
      unsigned char nextSub4;    //4th subsection number for next cue
      } listdata[8];

GET PLAYBACK EN      Get current playback / record data from AudioBox
type: Ethernet-only
   short code: 7300H
   short length: 4

The following data structure is sent from the AudioBox:

   short code: 7300H
   short length: 1028
   struct {
      char unused;            //unused, reserved
      char record;            //nonzero: channel is record enabled
      char stopped;           //nonzero: playback on channel is stopped
      char disabled;          //nonzero: playback on channel is disabled
      long selectionNumber;   //selection number loaded / recording on channel
      long channelLocation;   //playback / record location in blocks from start of selection
      long emptyBlocks;       //empty blocks in audio buffer
      } plbkrecData[64];

A playback channel is in one of three states: running, stopped or disabled. A channel is running if 'stopped' and 'disabled' are both false (zero). It is stopped if 'stopped' is true and 'disabled' is false. A channel is disabled if 'disabled' is true, regardless of the value of 'stopped'. A 'stopped' channel has a valid playback location and will play back when a null GO is received on the channel, whereas a 'disabled' channel does not.

Valid selection numbers range from 1 to 8063. Playback location is returned in number of 512-byte blocks from the beginning of the selection. The 'emptyBlocks' field can be used to display the audio buffer status.

When a channel is being recorded, 'recording', 'stopped' and 'disabled' are all non-zero (true). All channels being recorded will have the same selection number and location because a single interleaved file is being generated at that selection number.

GET PLAYBACK POINTS EN      Get playback stop and resume points from AudioBox
type: Ethernet-only
   short code: 6C00H
   short length: 4

The following data structure is sent from the AudioBox:

   short code: 6C00H
   short length: 1028
   struct {
      long stopSelection;   //selection number containing stop point
      long stopLocation;    //stop point location in blocks from 
                            //start of selection, 0 means none
      long resumeSelection; //selection number containing resume point
      long resumeLocation;  //resume point location in blocks from 
                            //start of selection, 0 means none
      } plbkrecord[64];

The current stop and resume point locations are returned by this command. Valid selection numbers range from 1 to 8063. Locations are returned in number of 512-byte blocks from the beginning of the selection.

GET EQ EN   Get equalization data for a channel
type: Ethernet-only
   short code: 7800H
   short length: 12
   long IOflag;   //0: input, 1: output
   long channel;  //channel number: 0..63

The following data structure is sent from the AudioBox:

   short code: 7800H
   short length: 240
   long IOflag;   //0: input, 1: output
   long channel;  //channel number: 0..63
   long nSections;  //current number of EQ bands, see SET EQ BANDS
   struct {
      long a2;      //coefficient a2  (see SET EQ COEFFICIENTS)
      long a1;      //coefficient a1
      long b1;      //coefficient b1
      long a0;      //coefficient a0
      long b0;      //coefficient b0
      short filterType; // filter type: 0:none, 1:low shelf, 2:peaking, 3:high shelf, 4:low pass, 
                   5:high pass, 6:notch 7:bandpass
      unsigned short bandwidth;  // bandwidth * 10 
           //  (valid range is 10..990 for 1%..99% of centre frequency)
      signed short gain;  //gain in dB * 10 (e.g. 156 for +15.6 dB)
      short pad;          //for longword alignment
      unsigned long frequency; // centre frequency * 100, 2000..2000000
                               // (e.g. 22575 for 225.75 Hz)
      } abeqsection[7];

GET EQ returns equalization data for an input or output channel. Both coefficients and parameters are returned for all seven available sections (bands) of EQ. The current number of active bands is also returned.

SEND FIRMWARE EN   Send new firmware to AudioBox
type: Ethernet-only
   short code: 6B00H
   short length: 1036
   long pktNumber;
   long command;
   unsigned char data[1024];
 
   command is:
      0: data packet
      1: last packet, run new firmware
      2: last packet, write new firmware

The following acknowledgment is sent from the AudioBox:

   code: 6B00H
   length: 12
   long pktNumber; //acknowledged (ACK) or to be retransmitted (NAK)
   long response, 00H: NAK, 01H: ACK

Firmware is sent 1024 bytes per packet. The first packet of the transfer has zero as the packet number. A response packet containing a positive acknowledgment (ACK) must be received for each packet sent before the next packet may be sent. If a negative acknowledgment (NAK) is received, the packet must be retransmitted. If no reply is received after a reasonable timeout period, the packet should be retransmitted. The last packet must be zero-padded if the length of the file being sent is not an exact multiple of 1024. The last packet in the firmware transfer contains a command code that indicates whether the downloaded code should be run or written to disk. Typically a control program downloads new code and runs it, allowing it to be verified. If verified, it is downloaded again and written to disk.

SETUP STORE EN     Set up file transfer to AudioBox
type: Ethernet-only
   short code: 6D00H
   short length: 16
   long fileNumber;
   long fileType;   //0: audio, 
                    //1: show, auto-open lists, 
                    //2: show, don't auto-open lists
   long burstCount; //number of 64-packet bursts

The following data structure is sent from the AudioBox:

   short code: 6D00H
   short length: 8
   long responseCode;
 
 
The response code returned will be one of:
 
   01H: OK to proceed with file send, selection/show number is empty
   03H: Another file send is in progress
   04H: Not enough free space on disk until disk is defragmented
   05H: Not enough free space on disk even if disk were defragmented
   06H: invalid selection/show number (greater than 8063/127)
   07H: transfer sequence canceled
   0AH: OK to proceed with file send, selection/show number was in use, 
            and has now been erased

SETUP STORE EN begins the sequence of sending an audio selection or show file to the internal disk drive via ethernet. The target selection / show file number is sent, along with the total size of the transfer, in 1024-byte packets. Transfers are done in bursts of 64 packets. The total transfer size in bytes is 'burstCount' times 64 times 1024. If fileType is zero, the file is an audio selection, otherwise it is a show file. The AudioBox returns a packet containing a response code, indicating that the audio file transfer may now proceed, or that there is a reason that the transfer cannot proceed. If the response is "OK to proceed" (01H or 0AH), the audio selection or show file is then transferred via a set of SEND FILE EN packets. Valid file numbers for audio selections range from 1 to 8063. Valid file numbers for shows range from 1 to 127. A file transfer sequence may be canceled at any time by sending a SETUP STORE transaction with a zero file number. If a file transfer sequence is canceled, the selection or show number specified is erased.

There are two options when transfering a show file that is already open on the AudioBox (show refresh). If fileType is 1, the show is closed and re-opened, and all lists are opened that are flagged to automatically open when the show is opened. If fileType is 2, the show is closed and re-opened, and no lists are automatically opened. This facilitates restoring the show state.

SEND FILE EN   Send file to AudioBox
type: Ethernet-only
   short code: 8400H
   short length: 1032     //length changed in firmwware A430
   long packetNumber;     //this field added in firmwware A430
unsigned char data[1024];
 
MUST be the only command in the packet.

The following 'burst acknowledgment' is sent from the AudioBox after a packet burst (64 packets) has been received:

   short code: 8400H
   short length: 12
   long packetNumber;     //this field added in firmwware A430
   long response;         //00H: NAK, 01H: ACK, added in firmwware A430

The following 'transfer complete' message is sent from the AudioBox when the file transfer is complete, the directory has been updated, and another file transfer may begin:

   short code: 8900H
   short length: 12
   long dirType; //0: audio, 1: show
   long fileNumber;

The process of transferring an audio selection or a show file to the AudioBox beings with a SETUP STORE EN transaction, described above. Only after getting an "OK to proceed" response code back from the AudioBox is the command SEND FILE EN, described in this section, available for use. SEND FILE EN packets sent when no transfer has been set up by a successful SETUP STORE EN are ignored.

SEND FILE EN packets cannot contain other commands.

Audio or show data is sent to the AudioBox in bursts of 64 packets, 1024 bytes per packet. The packetNumber field contains the number of the packet within the entire file transfer. The first packet sent is packet number 0. After sending 64 packets, the sending program must wait for a positive burst acknowledgment from the AudioBox before sending the next burst. A positive burst acknowledgment (ACK, response = 1) contains the packet number of the next packet to be sent, the first packet of the next burst (the six least significant bits of this number will all be '0's).

If an error occurs (e.g. a packet received out of order due to a lost packet), a negative acknowledgement (NAK, response = 0) is sent. When a negative acknowledgement is received, or if no acknowledgement is received after a reasonable timeout period (e.g. 10 seconds), the burst should be repeated. The packet number field in the negative acknowledgement contains the packet number of the first packet in the burst in which the error occurred, which is now the next packet expected to be sent.

The AudioBox will send at most one NAK per burst. When a packet with the expected packet number is received, the transmission of a NAK is enabled, should an error occur. When a NAK is sent, further NAK transmissions are disabled until the expected first packet of the burst being repeated is received.

(Note: The transfer algorithms used are designed to minimize file transfer times, and are based on the assumption of a reliable local ethernet connection that delivers packets in the order sent. Files not on a computer on the local area network must be transferred to a local computer before being sent to an AudioBox.)

The SEND FILE EN process will not complete until all of the packet bursts have been transferred, the number specified in the SETUP STORE EN command ('burstCount' field) that began the transfer process (unless the SEND FILE EN process is canceled by sending a SETUP STORE EN command with a zero file number). The number of bytes sent must be rounded up to a multiple of 64K (65536), with zero-padding if the length of the file being sent is not an exact multiple of 64K.

Audio data is sent as a stream of 16-bit words, with the most significant byte of the word first. Audio data sent to the AudioBox must conform to the following requirements:

GET DIRECTORIES EN   Get directory data from AudioBox
type: Ethernet-only
   short code: 7B00H
   short length: 12
   long dirType; //0: audio, 1: show
   long directorySegment;
 
The following data structure is sent from the AudioBox:
short code: 7B00H
   short length: 524
   long dirType; //0: audio, 1: show
   long directorySegment; 
   long blocks[128];

Each packet contains longword entries for 128 files. The longword entry specifies the number of blocks of data in the file corresponding to that directory entry. An unused file number is indicated by zero blocks. The directorySegment is 0 for the show directory and 0..62 for the audio directory. For the audio directory, entries for selection numbers 0..127 are in segment 0, entries for selection numbers 128..255 are in segment 1, etc., with entries for selection numbers 7936..8063 in segment 62. Selection and show numbers start at 1; the first entry in each directory (entry[0] in directorySegment 0) is unused.

Note that file names, modification dates, etc. are retrieved using GET FILEDATA EN.

GET SELECTION CHANNELS EN   Get number of channels in audio selection
type: Ethernet-only
   short code: 6600H
   short length: 8
   long segment;
 
The following data structure is sent from the AudioBox:
short code: 6600H
   short length: 1032
   long segment; 
   char channels[1024];

Each packet contains channel counts for 1024 audio selections. The byte-length entry specifies the number of audio channels in the corresponding audio selection file. The valid segment number range is 0..7. Entries for selection numbers 0..1023 are in segment 0, entries for selection numbers 1024..2047 are in segment 1, etc., with entries for selection numbers 7168..8063 in segment 7. Selection number 0 is unused and will contain a zero.

Selection channels packets are sent automatically when the 'directory' bit (bit 14) was set in the most recent SET AUTO UPDATE EN message and one or more audio directory entries has been modified.

Data returned is valid only if the selection number is known to be in use. A zero block length for the entry returned by GET DIRECTORIES EN indicates an unused selection number.

 
SET FILEDATA EN      Set file name and related data
   type: Ethernet-only
   short code: 8100H
   short length: 268
   long fileNumber;
   long fileType;   //0: audio, 1: show
*** The following structure is written to disk (256 bytes) ***
   struct {
      char filename[32]; //selection/show file name string
      long trDate; //transfer date/time (seconds since May 30, 1997, 3:00 AM)
      char flags;   //flag byte: defined below (unused)
      char reserved[11];  //reserved for future definition
      long srcFileSize;  //source file size in bytes (unused)
      long modDate; //source file last modification date/time
                    // (seconds since May 30, 1997, 3:00 AM)
      char sourceFilePath[200];  //source file path 
                   //(locates source file on user's computer)
      }
 
   flags byte:
   bit
    0     Archived (control software has backed up file)
    1     Locked (control software will issue warning prior to delete)
    2..7  currently undefined, reserved
 

A file data structure containing file name, modification date, etc. can be stored on the AudioBox internal disk drive for each audio selection and each show file. This data can be retrieved with the GET FILEDATA EN command. Valid file numbers for audio selections range from 1 to 8063. Valid file numbers for shows range from 1 to 127.

The srcFileName string contains the file name, optionally prefixed with path information that can be used to locate the source file on the host computer disk drive. The filename and sourceFilePath strings are null-terminated strings composed of UTF8-encoded characters. Note that the number of characters that can be stored in these fields can be less than the number of bytes due to multi-byte character encoding in UTF8.

The transfer and modification date/time longwords are in seconds since May 30, 1997, 3:00 AM (the AudioBox date/time of birth).

GET FILEDATA EN      Get file data from AudioBox
   type: Ethernet-only
   short code: 8200H
   short length: 12
   long dirType; //0: audio, 1: show 
   long directorySegment;
 
A series of 32 packets containing the following data structure is sent 
from the AudioBox:
   short code: 8200H
   short length: 1036
   long dirType;   //0: audio, 1: show
   long startingFileNumber;  //file number for data in fileData[0]
   struct {
      char filename[32]; //selection/show description string
      long trDate; //transfer date/time (seconds since May 30, 1997, 3:00 AM)
      char flags;   //flag byte: defined below (unused)
      char reserved[11];  //reserved for future definition
      long srcFileSize;  //source file size in bytes (unused)
      long modDate; //source file last modification date/time
                    // (seconds since May 30, 1997, 3:00 AM)
      char srcFileName[200];  //source file name
      } fileData[4];
 
   flags byte:
   bit
    0     Archived (control software has backed up file)
    1     Locked (control software will issue warning prior to delete)
    2..7  currently undefined, reserved

File data can be retrieved from the AudioBox with the GET FILEDATA EN command. A single GET FILEDATA EN command returns all of the file data for one directory segment. A directory segment contains 128 files. The file data for a directory segment is sent as a set of 32 packets from the AudioBox with file data for four files contained in each packet. The directorySegment specified in the command must be 0 for show file data and 0..62 for audio file data. Valid file numbers for audio selections range from 1 to 8063. Valid file numbers for shows range from 1 to 127. Audio selections 0..127 are in segment 0, audio selections 128..255 are in segment 1, etc., with selections 7936..8063 in segment 62. Selection and show numbers start at 1; the structure returned for file number zero will be all zeros.

Data returned for each selection/show entry is exactly the same 256-byte block that was set by the most recent SET FILEDATA EN. Data returned is valid only if the selection/show number is known to be in use. If a selection has been erased, for example, GET FILEDATA will return the data for the erased file.To determine if an entry is in use, do a GET DIRECTORIES EN command. A zero block length for the entry returned by GET DIRECTORIES EN indicates an unused selection/show number.

Control programs must wait for one GET FILEDATA EN response to arrive before issuing the next GET FILEDATA EN request.

GET FILE EN        Retrieve audio or show file data from AudioBox drive
  type: Ethernet-only
   short code: 8700H
   short length: 16
   long fileNumber;
   long fileType;        //0: audio, 1: show
   long startingSegment; //starting 1024-byte segment number, 0, 32, 64...
 
32 of the following data structures are sent from the AudioBox:
   short code: 8700H
   short length: 1044
   long fileNumber;
   long fileType;   //0: audio, 1: show
   long segment;    //1024-byte segment number
   long returncode;
   unsigned char data[1024];
 
   returncode is one of:
   1: OK, data is valid
   2: file number invalid
   3: file is erased
   4: segment number too high

Audio selection and show files stored on the AudioBox can be retrieved using the command GET FILE EN. Each GET FILE EN command causes the AudioBox to send a 32K chunk of data from the specified file, consisting of 32 ethernet packets each containing 1024-bytes of data. The first 1024-byte segment of the file is segment number zero.

The starting segment number should be a multiple of 32. The AudioBox ignores bits 0 through 4 of the starting segment number, assuming them to be zero. If the file number is invalid (larger than the maximum) or the file is empty (erased) or the starting segment number is larger than the starting segment number for the last 32K of data in the file, one packet is returned (not 32), the returncode will be larger than 1 and the data returned is invalid.

There is no translation involved in sending or retrieving show files. If the same sequence of segments that are sent by the GET FILE command are written to a disk file on a host computer, a valid AudioBox-format show file results.

When sent to the AudioBox, audio data is translated by the program on the host computer doing the file transfer, from various audio file formats (wav, aiff, etc.) to a stream of 16-bit words, with the most significant byte of the word first. (see SEND FILE EN). The GET FILE command returns the same data that was sent when the file was transferred. It is up to the program doing the file retrieval to put the data into the desired audio file format.

Multi-channel audio files recorded on the AudioBox can also be retrieved using GET FILE EN. Audio is recorded in 16-bit words sampled at 48000 kHz.Audio data from GET FILE EN is sent in blocks of 8K for each channel, i.e. 8K of data (8 packets) from the first channel in the file, 8K of data from the second channel in the file and so on up to 8K of data from the last channel in the file, after which the next 8K from the first channel is sent, etc. The number of channels in a file is returned by the GET SELECTION CHANNELS EN command. The program on the host compuiter performing the file transfer can write the data into a set of single channel files in the desired file format (wav, aiff, etc.), or into a single multi-channel audio file in the desired format.

ERASE FILE EN   Erase file on AudioBox drive
type: Ethernet-only
   short code: 6A00H
   short length: 12
   long fileNumber;
   long fileType;   //0: audio, 1: show
 
MUST be the only command in the packet.

The following acknowledgment is sent from the AudioBox:

code: 6A00H
length: 8
long response: 1: OK, 0: bad file number or file transfer in progress

The following message is sent from the AudioBox when the erasure is complete, the directory has been updated, and another erase or file transfer may begin:

   short code: 8900H
   short length: 12
   long dirType; //0: audio, 1: show
   long fileNumber;

ERASE FILE EN removes an audio selection or show file from the internal disk drive. Valid file numbers for audio selections range from 1 to 8063. Valid file numbers for shows range from 1 to 127. ERASE FILE EN packets cannot contain other commands. A directory update must be received from the AudioBox (indicating that the directory has been updated on the AudioBox disk) before sending a subsequent ERASE FILE EN packet. See the SET AUTO UPDATE EN command.

ERASE FILE marks the specified audio selection or show file as no longer in use. The file erased has zero length until rewritten. The file data is unaffected by this command (see SET FILEDATA EN, GET FILEDATA EN). If the file erased is at the top of the used disk space, the freed space is added to the free space available for new show and audio files. Otherwise, the disk space used by the file is unusable until recovered (added to the available free space) when the disk is defragmented.

GET TIME EN    Get current real time from AudioBox
  type: Ethernet-only  
   short code: 7D00H
   short length: 4

The following data structure is sent from the AudioBox:

   short code: 7D00H
   short length: 36
   word validFlags;      //field valid flags
   bcd year;             //year, '00' for year 2000 .. '99'
   bcd month;            //month, '01' .. '12' 
   bcd week;             //week of year, '01' .. '53'
   bcd day;              //day of month, '01 .. '31'
   bcd weekday;          //day of week, '01 .. 07' (Sunday = 1)
   bcd hour;             //hour, '00' .. '23'
   bcd minute;           //minute, '00' .. '59'
   bcd second;           //second , '00' .. '59'
   signed word sunrise;  //minutes before/after sunrise -1440..1440
   signed word sunset;   //minutes before/after sunset  -1440..1440
   byte daynight;        //night=0, day=1
   byte dst;             //standard=0, daylight savings time=1
   char unused[16];
 
 Valid flags
   bit
   0  year
   1  month
   2  week of year
   3  day of month
   4  day of week
   5  hour
   6  minute
   7  second
   8  sunrise
   9  sunset
   10 daynight
   11 dst
   12 - 15  not defined, set to 0

GET TIME EN returns the current real time settings from the AudioBox. The data structure is identical to the one used in GET TIME (AB1616 / 1616HD). Most of the fields contain two digits of binary-coded decimal data. These fields are of type 'bcd' in the structure definition above. A 'bcd' field is one byte in length, with the tens digit occupying the upper four bits of the byte and the ones digit occupying the lower four bits of the byte. For example, '47' would be represented as the following binary byte: 0100 0111.

The validFlags word contains field valid flags. These flags, when set, indicate that the corresponding field is valid. Currently, the real time clock in the AudioBox does not generate or update the following fields (the corresponding bits in 'validFlags' will be zero, unless set by a SET TIME EN command):

These fields can be set by a SET TIME EN command, below.

SET TIME EN    Set current real time in AudioBox
  type: Ethernet-only  
   short code: 8300H
   short length: 36
   word validFlags;      //field valid flags
   bcd year;             //year, '00' for year 2000 .. '99'
   bcd month;            //month, '01' .. '12' 
   bcd week;             //week of year, '01' .. '53'
   bcd day;              //day of month, '01 .. '31'
   bcd weekday;          //day of week, '01 .. 07' (Sunday = 1)
   bcd hour;             //hour, '00' .. '23'
   bcd minute;           //minute, '00' .. '59'
   bcd second;           //second , '00' .. '59'
   signed word sunrise;  //minutes before/after sunrise -1440..1440
   signed word sunset;   //minutes before/after sunset  -1440..1440
   byte daynight;        //night=0, day=1
   byte dst;             //standard=0, daylight savings time=1
   char unused[16];

SET TIME EN sets the real time clock in the AudioBox. The data structure is identical to the one used in GET TIME EN. Most of the fields contain two digits of binary-coded decimal data. These fields are of type 'bcd' in the structure definition above. A 'bcd' field is one byte in length, with the tens digit occupying the upper four bits of the byte and the ones digit occupying the lower four bits of the byte. For example, '47' would be represented as the following binary byte: 0100 0111. No data is returned by this command. Currently, the real time clock in the AudioBox does not update the following fields (they can be set by this command but will not be updated):

SET UNIT NAME EN    Set AudioBox unit name string
  type: Ethernet-only  
   short code: 8600H
   short length: 36
   char nameString[32];

SET UNIT NAME EN sets the unit name string. This string is part of the data returned by the INQUIRY EN command. This string is stored on disk. The name string must be UTF8 encoded. The string must be null-terminated, therefore the maximum name string length is 31 bytes (which may be less than 31 characters due to multi-byte character encoding in UTF8).

SET COBRANET EN    Set up Cobranet
type: Ethernet-only  
   short code: 8800H
   short length: 292
   short CN1RXBundle[4];   //Module 1 receiver 0..3 bundle assignments
   short CN1TXBundle[4];   //Module 1 transmitter 0..3 bundle assignments
   short CN2RXBundle[4];   //Module 2 receiver 0..3 bundle assignments
   short CN2TXBundle[4];   //Module 2 transmitter 0..3 bundle assignments
   char unused[256];       //reserved for future use
 

SET COBRANET EN sets configuration data in the CobraNet modules installed in the AB64. Data for CobraNet modules that are not installed is ignored.

Receive and transmit bundle assignments determine the routing of audio channels on the CobraNet. On the AB64, a bundle carries eight audio channels. Each AB64 CobraNet module has four receivers and four transmitters. The matrix channels are mapped to the receivers and transmitters linearly:

matrix   CobraNet  receiver /
channels  module   transmitter
1 to 8      1         0
9 to 16     1         1
17 to 24    1         2
25 to 32    1         3
33 to 40    2         0
41 to 48    2         1
49 to 56    2         2
57 to 64    2         3

Bundle numbers connect transmitters to receivers: the eight audio channels transmitted by a transmitter set to bundle n are received by a receiver set to bundle n. Valid bundle numbers are 1..255 for multicast bundles (more than one receiver) and 256..65279 for unicast bundles (one receiver). A bundle number of zero indicates an unused receiver or transmitter. When powered on, all receive and transmit bundle numbers are set to zero (inactive). Bundle assignments can also be made over the CobraNet using CobraNet configuration software, rather than by the AudioBox using this command.

There is an equivalent MIDI-formatted command, SET COBRANET.

GET COBRANET EN    Get CobraNet settings
  type: Ethernet-only  
   short code: 6700H
   short length: 4

The following data structure is sent from the AudioBox:

   short code: 6700H
   short length: 292
   short CN1RXBundle[4];   //Module 1 receive bundle assignments
   short CN1TXBundle[4];   //Module 1 transmit bundle assignments
   short CN2RXBundle[4];   //Module 2 receive bundle assignments
   short CN2TXBundle[4];   //Module 2 transmit bundle assignments
   char unused[256];       //reserved for future use
 

GET COBRANET EN returns the data sent by the previous SET COBRANET EN command. The data is returned from memory, not from the CobraNet modules; i.e. getting back data does not indicate an installed and working CobraNet module.

SET AUTO UPDATE EN    Set up automatic data updating
type: Ethernet-only  
   short code: 8500H
   short length: 8
   long flags
 
MUST be the only command in the packet.
 
The flags longword is defined as follows:
   bit data returned
    0  INQUIRY           (INQUIRY EN)
    1  STATS             (GET STATS EN)
    2  DISK STATE        (GET DISK STATE EN)
    3  VU                (GET VU EN)
    4  IO GAIN LEVEL     (GET IO LEVELS EN)
    5  IO DELAY          (GET IO DELAY EN)
    6  PLAYBACK          (GET PLAYBACK EN)
    7  SHOW              (GET SHOW EN)
    8  MUTE/SOLO         (GET MUTE/SOLO EN)
    9  SUBMASTER         (GET SUBMASTER EN)
   10  REAL TIME         (GET TIME EN)
   11  CROSSPOINT LEVEL  (GET XPT LEVELS EN)
   12  CROSSPOINT DELAY  (GET XPT DELAY EN)
   13  EQ                (GET EQ EN)
   14  DIRECTORY         (GET DIRECTORIES EN, GET SELECTION CHANNELS EN)
   15  FILE DATA         (GET FILEDATA EN)    (data stops at highestSelNum, highestShNum)
   16  PLAYBACK POINTS   (GET PLAYBACK POINTS EN)
   17  LCD DATA          (GET LCD EN)
   18  COBRANET          (GET COBRANET EN)
   19-30 reserved, set to zero
   31  SEND ALL DATA

SET AUTO UPDATE EN sets up automatic data updating between the AudioBox and a control program running on a host computer. A control program registers the set of data it wants to maintain by sending a SET AUTO UPDATE EN command with the appropriate flag bits set in the 'flags' longword. Every 40 milliseconds (25 times per second), the AudioBox sends all data structures to the control program that have the corresponding flag bit set and that contain data that has changed. The data structures returned are in the same format as if the corresponding GET command had been sent, i.e. each data structure is prefixed with a code and length. More than one data structure may be included in a returned packet. The SET AUTO UPDATE EN must be the only command in a packet sent to the AudioBox.

Automatic data updating can be discontinued at any time by sending a SET AUTO UPDATE EN command with all flags cleared. Control programs should do this when they exit.

When a SET AUTO UPDATE EN command is received with the 'send all data' flag (bit 31) set, the AudioBox sends one complete set of requested data structures, regardless of whether or not the data changed within the previous 40 milliseconds. This can include EQ data for all channels, all segments of the disk directory that are in use and file data for all audio selections and shows on the disk. This serves to initialize the control program's local data structures.

In general, the AB64 can send data in a burst of packets faster than a host computer can process it. To work reliably, flow control is required. It is assumed that the host computer has 64K or more of buffering on its incoming socket. (The standard 'C' function 'setsockopt' with the SO_RCVBUF option can be used if necessary to set the buffer size for the socket.) The AudioBox keeps track of how many bytes of auto-update data it has sent to each host. After sending an amount of data somewhat less than 64K, the AudioBox stops sending auto-update data to that host. When any form of the SET AUTO UPDATE EN command is received, the sent-byte count is reset to zero, resuming the sending of auto-update data, if any. This flow control mechanism also serves to discontinue automatic data updates when a control program is terminated for whatever reason.

The host control program should send a SET AUTO UPDATE EN command, with the flags set for the data it wants, whenever it empties its socket buffer. This message causes the AudioBox to zero the sent-byte count. After ten seconds during which no SET AUTO UPDATE EN commands are received from a host, auto updating for that host times out, freeing the slot for another host. This mechanism handles the situation when a control program terminates for whatever reason without stopping auto updating. If a host has enabled auto updating on STATS (bit 1) or REAL TIME (bit 10), and sends a SET AUTO UPDATE EN command whenever it empties its socket buffer, this timeout will not occur because these structures change at least every second. If these structures are not enabled for auto updating and the AudioBox is idle, no auto updates will occur. In this case, the control program must send a SET AUTO UPDATE EN command at least once every ten seconds to maintain auto updating.

The 'send all data' version of the SET AUTO UPDATE EN command (bit 31 set) initializes a burst of all requested data. This form of the command should not be re-sent until all of the requested data has been received. If a 'send all data' request is to be followed by continuous auto updates (a common startup scenario), the control program should send a single 'send all data' version of the SET AUTO UPDATE EN command (bit 31 set, plus flags set for the initial data it wants), and then whenever the incoming socket buffer is emptied, a normal version of the SET AUTO UPDATE EN command (bit 31 clear and flags set for the changed data it wants). If a 'send all data' request is not to be followed by continuous auto updates, the control program should send a single 'send all data' version of the SET AUTO UPDATE EN command (bit 31 set, plus flags set for the data it wants), and then whenever the incoming socket buffer is emptied, a SET AUTO UPDATE EN command with a flag longword set to zero (all flags clear).

A 'send all data complete' message is sent by the Audiobox after all requested data has been sent. The is the last message in the set of messages generated by a 'send all data' version of the SET AUTO UPDATE EN command.

   short code: 7A00H   //'send all data' command: all data now sent
   short length: 4

The AudioBox can handle automatic updating of multiple host computers. Each host is handled independently. For the purposes of automatic updating, a 'host' is defined by the combination of the IP address and port number in the header of the packet containing the SET AUTO UPDATE EN command. Therefore, different sockets on the same computer (which will have different port numbers but usually the same IP) are handled as distinct hosts. There is a limit on the number of hosts that can be getting automatic updates simultaneously. If the limit is exceeded, the following is sent from the AudioBox in response to any form of the SET AUTO UPDATE EN command:

   short code: 8500H   //cannot set up automatic data updating, too many hosts 
   short length: 4

Implementation notes:

  1. The INQUIRY data structure includes the AudioBox's network (IP) address, which can be changed from the front panel and can potentially change at any time due to events on the network. When the IP changes, the control program needs to change its packet addressing if it is to maintain communication with the AudioBox.
  2. The STATS data structure includes the AudioBox's primary millisecond clock, which is always running. If the STATS flag is set, a STATS data structure will be sent every 40 milliseconds.
  3. The SHOW data structure contains list clocks, which are used to determine the changed status of the SHOW data structure. Thus if one or more list clocks are running and SHOW data is enabled, SHOW data will be sent every 40 milliseconds.
  4. The REAL TIME data structure includes a seconds field. If REAL TIME data is enabled, REAL TIME data will be sent once per second.
  5. Directory and file data change when files are downloaded. Immediately after a file transfer, the directory segment that changed, the selection channels segment that has changed and the file data for the downloaded file are sent to all hosts that have enabled this data.
  6. Directory data changes when a file is erased. Immediately after a file erasure, the directory segment that changed is sent to all hosts that have enabled this data.


Alphabetical Command List - All AudioBox models

 


COMMAND CODES

System Exclusive command & response codes

   F0H 00H 00H 40H 02H destID srcID [code][data] F7H
 
00H SET DEVICE ID
01H unused
02H SET EQ COEFFICIENTS
03H GO CHANNEL SET EXT
04H SET COBRANET
05H reserved
06H reserved
07H reserved
08H reserved
09H ERASE SELECTION
0AH DEFRAGMENT DRIVE
0BH DOWNLOAD GAIN TABLE
0CH CLEAR DATA
0DH reserved
0EH ERASE SHOW
0FH FORMAT DRIVE
10H QUERY DEVICE ID
11H QUERY STATS
12H QUERY VU
13H QUERY SUBMASTER
14H QUERY CONTROLLER
15H QUERY VERSION
16H SET XPT DELAY
17H QUERY DRIVE
18H QUERY SELECTION
19H QUERY SHOW
1AH SET SOURCE MIX
1BH SET DELAY SAMPLES
1CH SEND MIDI
1DH SET CROSSPOINT ROW
1EH SET CROSSPOINT ROW w/NOTIFY
1FH SET STOP NOTIFICATION
20H RESPONSE DEVICE ID
21H RESPONSE STATS
22H RESPONSE VU
23H RESPONSE SUBMASTER
24H RESPONSE CONTROLLER
25H RESPONSE VERSION
26H unused
27H RESPONSE DRIVE
28H RESPONSE SELECTION
29H RESPONSE SHOW
2AH RESPONSE COMMAND COMPLETE
2BH unused
2CH unused
2DH unused
2EH unused
2FH unused
30H QUERY IO LEVELS
31H QUERY CROSSPOINT LEVELS
32H QUERY DELAY VALUES
33H QUERY SHOW STATE
34H QUERY EQ COEFFICIENTS
35H QUERY MUTE / SOLO
36H QUERY PLAYBACK
37H unused
38H unused
39H unused
3AH QUERY DELAY ENABLE
3BH unused
3CH reserved
3DH SET CROSSPOINT ROW EXCL PAN
3EH SAVE SETTINGS
3FH LOAD SETTINGS
40H RESPONSE IO LEVELS
41H RESPONSE CROSSPOINT LEVELS
42H RESPONSE DELAY VALUES
43H RESPONSE SHOW STATE
44H RESPONSE EQ COEFFICIENTS
45H RESPONSE MUTE/SOLO
46H RESPONSE PLAYBACK
47H unused
48H unused
49H unused
4AH RESPONSE DELAY ENABLE
4BH unused
4CH unused
4DH unused
4EH unused
4FH unused
50H reserved
51H reserved
52H reserved
53H SET COBRANET
54H reserved
55H reserved
56H COPY DRIVE
 

MIDI Show Control SOUND format command codes

00H unused
01H GO 
02H STOP 
03H RESUME
04H unused 
05H unused 
06H MSC SET COMMANDS 
07H unused 
08H ALL OFF 
09H RESTORE 
0AH RESET 
0BH unused 
0CH unused 
0DH unused 
0EH unused 
0FH unused 
10H GO JAM CLOCK 
11H STANDBY+ 
12H STANDBY-
13H unused 
14H unused 
15H START CLOCK 
16H STOP CLOCK 
17H ZERO CLOCK 
18H SET CLOCK 
19H MTC CHASE ON 
1AH MTC CHASE OFF 
1BH OPEN CUE LIST 
1CH CLOSE CUE LIST 
1DH OPEN CUE PATH 
1EH CLOSE CUE PATH
 

MIDI Show Control SOUND format SET command codes

   F0H 7FH devID 02H 10H 06H [code] [data] F7H
 
00H MSC SET 00H COMMANDS
01H SET CROSSPOINT LEVEL
02H unused
03H unused
04H unused
05H unused
06H ASSIGN SUBMASTER
07H ASSIGN CONTROLLER
08H SET CROSSPOINT PHASE
09H SET GPI
0AH SETUP RECORD
0BH unused
0CH unused
0DH unused
0EH unused
0FH unused
10H MSC SET 10H COMMANDS
11H SET CROSSPOINT LEVEL w/NOTIFY
12H unused
13H unused
14H unused
15H ENABLE PAN
 

MIDI Show Control SOUND format SET 00H command codes

   F0H 7FH devID 02H 10H 06H 00H [code] [data] F7H
 
00H  SET INPUT LEVEL
01H  unused
02H  unused
03H  SET OUTPUT LEVEL
04H  unused
05H  unused
06H SET SUBMASTER LEVEL
07H MUTE INPUT CHANNEL
08H MUTE OUTPUT CHANNEL
09H SOLO INPUT CHANNEL
0AH SOLO OUTPUT CHANNEL
0BH ENABLE DELAY
0CH SET EQ BANDS
0DH SET INPUT CHANNEL MODE
0EH SET DEFAULT SHOW
0FH10H SET DELAY
11H SET SUBMASTER GAIN
12H SET SUBMASTER ZERO
13H INSTALL GAIN TABLE
14H SET MTC SOURCE
15H SET RESET ACTIONS
16H SET MATRIX
17H SET MIDI CHANNEL
18H SET MIDI ECHO
19H SET ALL_OFF ACTIONS
1AH SET PAN
1BH DISABLE PANNING
1CH SET SLAVE MODE
1DH DEASSIGN SUBMASTER
1EH PUSH FRONT PANEL BUTTON
1FH SET GPO
20H DEASSIGN SUBMASTER I/O
21H ENABLE RECORD CHANNEL
22H SELECT DRIVE
23H ALLOCATE DELAY
 

MIDI Show Control SOUND format SET 10H command codes

   F0H 7FH devID 02H 10H 06H 10H [code] [data] F7H
 
00H SET INPUT LEVEL w/ NOTIFY 
01H unused 
02H unused 
03H SET OUTPUT LEVEL w/NOTIFY 
04H unused 
05H unused
 

MIDI Show Control PLAYBACK format command codes

   F0H 7FH devID 02H 13H [code] [data] F7H
 
00H unused
01H GO
02H STOP
03H RESUME
04H unused
05H LOAD
06H GO CHANNEL SET
07H SET INPUT CHANNEL MODE
08H ALL_OFF
09H RESTORE
0AH unused
0BH unused
0CH unused
0DH unused
0EH unused
0FH unused
10H unused
11H unused
12H unused
13H unused
14H unused
15H unused
16H unused
17H unused
18H unused
19H unused
1AH unused
1BH unused
1CH DISABLE CHANNEL
 

SCSI command codes

Command Descriptor Block operation codes

Firmware versions V662 (Model 1616HD), T222 (ModelAB1616) and higher.

00H SCSI TEST UNIT READY
01H unused
02H unused
03H SCSI REQUEST SENSE
04H thru 0BH unused
OCH RECEIVE RESPONSE (also CCH)
ODH SEND COMMAND (also CDH)
0EH thru 10H unused
11H GET STATS (also D1H)
12H SCSI INQUIRY
13H thru C0H unused
C0H reserved
C1H GET FILE
C2H unused
C3H reserved
C4H unused
C5H GET DISK STATE
C6H SET FILEDATA
C7H GET FILEDATA
C8H GET EXTENDED FILEDATA
C9H GETREAL
CAH GET EXTENDED DIRECTORIES
CBH GET EQ
CCH RECEIVE RESPONSE (also 0CH)
CDH SEND COMMAND (also 0DH)
CEH SEND FILE
CFH GET DIRECTORIES
D0H GET VU
D1H GET STATS (also 11H)
D2H reserved
D3H GET PLAYBACK
D4H GET SHOW
D5H GET MUTE/SOLO
D6H GET DELAY
D7H GET SUBMASTER
D8H unused
D9H GET LEVELS
DAH GET ALLEQ
DBH reserved
DCH GET REJECTED MSG
DDH GET TIME
DEH GET GAIN TABLES
DFH ERASE FILE
E0H SETUP STORE

Command Lengths

MIDI Format commands

7      ALL_OFF
11     ALLOCATE DELAY
11     ASSIGN CONTROLLER
11     ASSIGN SUBMASTER
12     CLEAR DATA
8..13  CLOSE CUE LIST
8..19  CLOSE CUE PATH
14     COPY DRIVE
9      DEFRAGMENT DRIVE
7..9   DISABLE CHANNEL
11     DISABLE PANNING
106    DOWNLOAD GAIN TABLE
11     ENABLE DELAY
16     ENABLE PAN
11     ENABLE RECORD CHANNEL
13     ERASE SELECTION
13     ERASE SHOW
12     FORMAT DRIVE
7..24  GO (show)
7..31  GO (playback)
11     GO CHANNEL SET
19     GO CHANNEL SET EXT
7..24  GO JAM CLOCK
11     INSTALL GAIN TABLE
10.31  LOAD
11     LOAD SETTINGS
16     MERGE CROSSPOINT LEVELS
16     MERGE CROSSPOINT LEVELS w/ NOTIFY
7..12  MTC_CHASE_OFF
7..12  MTC_CHASE_ON
11     MUTE INPUT CHANNEL
11     MUTE OUTPUT CHANNEL
8..19  OPEN CUE LIST
8..19  OPEN CUE PATH
9      QUERY CONTROLLER
9      QUERY CROSSPOINT LEVELS
9      QUERY DELAY ENABLE
9      QUERY DELAY VALUES
9      QUERY DEVICE ID
9      QUERY DRIVE
11     QUERY EQ COEFFICIENTS
9      QUERY IO LEVELS
9      QUERY MUTE / SOLO
10     QUERY PLAYBACK
9      QUERY SELECTION
9      QUERY SHOW
10     QUERY SHOW STATE
9..10  QUERY STATS
9      QUERY SUBMASTER
9      QUERY VERSION
9..10  QUERY VU
7      RESET
7      RESTORE
7..18  RESUME (show)
10..31 RESUME (playback)
11     SAVE SETTINGS
11     SELECT DRIVE
16..120 SEND MIDI
11     SET ALL_OFF ACTIONS
12..17 SET CLOCK
16     SET CROSSPOINT LEVEL
16     SET CROSSPOINT LEVEL w/ NOTIFY
11     SET CROSSPOINT PHASE
31     SET CROSSPOINT ROW
31     SET CROSSPOINT ROW EXCL PAN
31     SET CROSSPOINT ROW w/NOTIFY
11     SET DEFAULT SHOW
16     SET DELAY
13     SET DELAY SAMPLES
11     SET DEVICE ID
11     SET EQ BANDS
31     SET EQ COEFFICIENTS
11     SET GPI
11     SET INPUT CHANNEL MODE
16     SET INPUT LEVEL
16     SET INPUT LEVEL w/ NOTIFY
11     SET MATRIX
11     SET MIDI CHANNEL
11     SET MIDI ECHO
11     SET MTC SOURCE
16     SET OUTPUT LEVEL
16     SET OUTPUT LEVEL w/ NOTIFY
11     SET PAGE
16     SET PAN 
11     SET RESET ACTIONS
11     SET SLAVE MODE
16..73 SET STOP NOTIFICATION
11     SET SUBMASTER GAIN
11     SET SUBMASTER LEVEL
11     SET SUBMASTER ZERO
11     SETUP RECORD
11     SOLO INPUT CHANNEL
11     SOLO OUTPUT CHANNEL
7..12  STANDBY+
7..12  STANDBY-
7..12  START CLOCK
7..18  STOP (show)
7..31  STOP (playback)
7..12  STOP CLOCK
7..12  ZERO CLOCK
 

SCSI-only commands

1      ERASE FILE
8192   GET ALL EQ
132    GET DELAY
2572   GET DIRECTORIES
32     GET DISK STATE
244    GET EQ
xxx    GET FILE
163840 GET FILEDATA
288    GET LEVELS
32     GET MUTE/SOLO
128    GET PLAYBACK
1064   GET REAL
104    GET SHOW
28     GET STATS
324    GET SUBMASTER
32     GET VU
xxx    SCSI RECEIVE
xxx    SCSI SEND
xxx    SEND FILE
256    SET FILEDATA
1      SETUP STORE