Photo by Ed Gaucher

Keith L. Walker

Denman Island, British Columbia


Alesis BRC SysEx Information


The Alesis BRC generates and responds to MMC (MIDI Machine Control) and MTC (MIDI Time Code) messages. Since these are well-documented elsewhere on the 'Net, I won't discuss them here. However, the BRC also generates and responds to other SysEx messages, in particular data download and upload messages.

Alesis has chosen to keep the SysEx dump format for the BRC (ADAT controller) secret. I have tried to decipher at least the song information, because I wanted to be able to download it into a database. The following information is what I have been able to discover.


Format

The format of a BRC Sysex message is:
F0 00 00 0E 09 id op <data> F7
This is broken down as follows:
F0SysEx
00 00 0EAlesis manufacturer ID
09BRC
idUnit ID (0-126); 127 (7F) indicates all units
opOperation Code
<data>depends on Operation Code; may not exist
F7EOX

Bidirectional Operation Codes

Can be sent to or received from the BRC.

00h - Song data

F0 00 00 0E 09 id 00 <data> F7

This message is sent from the BRC in response to the Dump Song nn? prompt. It consists of a single song block. See below for details of the song block.

When sent to the BRC, the song data are loaded into the BRC's memory.

01h - All Data

F0 00 00 0E 09 id 01 <data> F7
F0 00 00 0E 09 id 01 <data> F7
(etc)

These messages are sent as a group from the BRC in response to the Dump AllData? prompt. Twenty-two individual SysEx messages are sent. The first two contain the Global Data (block 20) and Tempo Map (block 21) blocks. The remaining 20 messages (blocks 0-19) are song blocks for the 20 possible songs in the BRC's memory. See below for details of the song block. All 22 SysEx messages in the group use the 01h OpCode. The first byte in each data block can be 0-19, identifying the 20 songs, and 20 and 21 for the Global Data and Tempo Map blocks, respectively. Song messages are 823 bytes long, including the SysEx bytes. The Global Data block is 187 bytes, and the Tempo Map block is 697 bytes.

When sent to the BRC, the data are loaded into the BRC's memory.

50h - Switch settings

F0 00 00 0E 09 id 50 sw st F7

Response is the same as the request. Values of st byte are: 00h for off, 7Fh for on. Values of sw byte are:

51h - Display/SMPTE mode

F0 00 00 0E 09 id 51 sw st F7

Response is the same as the request.

sw bytest byteMeaning
32Absolute, Normal
33Relative, Normal
34SMPTE
38Bars
40SMPTE 24 fps
41SMPTE 25 fps
42SMPTE 29.97 fps
43SMPTE 29.97 fps drop
44SMPTE 30 fps
45SMPTE 30 fps drop
0Bh0-9Set Display Contrast

52h - Request ??

F0 00 00 0E 09 id 52 00 F7

Response is the same as the request. I don't know what this does or indicates.

53h - Switch settings

F0 00 00 0E 09 id 53 sw st F7

Response is the same as the request. Values of st byte are: 00h for off, 7Fh for on. Values of sw byte are:

54h - Edit settings

F0 00 00 0E 09 id 54 05 st1 st2 F7

Response is the same as the request. Values of st1 byte are:

58h - Request ??

F0 00 00 0E 09 id 58 00 F7

Response is the same as the request. I don't know what this does or indicates.

59h - Record Group

F0 00 00 0E 09 id 59 n1 [n2...] F7

Values for data bytes are:

If more than one data byte is present, each selected group is turned on in turn. This does not appear particularly useful. As each group is turned on, a 59h message with one data byte is sent, indicating the selected group. I have not found an "all off" message yet; The "All Clear" button does not generate a SysEx message. Nor have I found any way to set or detect the settings of the track Record Enable switches.

5Ah - Song Select

F0 00 00 0E 09 id 5A sn F7

The BRC does not send or receive MIDI Song Select (F3h) messages. Instead, it uses OpCode 5Ah SysEx messages. The sn byte is the song number (1-20). The BRC does not acknowledge this message, but it does respond to it.


Operation Codes: to BRC

07h - Request Software Version (?)

F0 00 00 0E 09 id 07 F7

This is a request for the BRC's software version number(?). The data block can be empty, so the entire message is 8 bytes long. When the BRC receives it, it responds with the OpCode 44h message.

16h - Go to Locate number

F0 00 00 0E 09 id 16 ln F7

This message selects the specified locate number from the current song, and goes to that location. ln is the locate number (1-20). 00 is for manual; 21 for Punch-In; 22 for Punch-Out.

57h - Request ADAT Count

F0 00 00 0E 09 id 57 F7

This message is sent to the BRC. In response, the BRC sends a 4Ch message containing the number of ADAT tape drives currently slaved to the BRC.

5Bh - Set Tempo Map

F0 00 00 0E 09 id 5B F7

Response is the same as the request. The BRC display changes to tempo map mode. I have not explored the possibilities of this message. Probably it accepts some data.

5Dh - Request Song Data

F0 00 00 0E 09 id 5D sn F7

The BRC responds to this by transmitting a 00h message containing the data for requested song number. The sn byte is 1-19 for the song number (1-19) or 20 for Global Data; 21 for Tempo Map. 00 downloads a 822-byte message which has no song number byte, and no useful data!

BUG ALERT!. Version 2.04 of the BRC software (possibly others too?) bas a bug that affects this message. The developers appear to have become confused about block numbers (0-19) vs. song numbers (1-20). This request uses song numbers (1-19) for songs 1-19, and block numbers (20, 21) for the global data and tempo map. A song number of 0 will return garbage. There is no way to obtain song 20! Furthermore, since there appears to be no "Request All Blocks" message, the only way to obtain data for song 20 is to get the user to do the download from the BRC's panel.

??h - Request All Data

It would be logical to have such a request, indeed, it is almost inconceivable not to have it. Still, I have not yet discovered this message, if it exists.

??h - Display Text

It would also be nice to have a Display Text message. I have not yet discovered this message, if it exists.


Operation Codes - from BRC

44h - Software Version (?)

F0 00 00 0E 09 id 44 v1 v2 F7

This message is sent from the BRC in response to an OpCode 07h message. The data block consists of two bytes (v1 and v2), containing the values 02 and 04. This could possibly be the software revision number, meaning in this case 2.04.

4Ch - ADAT Count

F0 00 00 0E 09 id 4C nt F7

Sent from the BRC in response to a 57h message. The nt byte contains the number of ADAT slave machines.


Song Data

The data block of a Song message (excluding the 7 preceding bytes of SysEx info and the trailing EOX) is 815 bytes long. The first 3 bytes are unencoded. The first byte (0-19) is the song number-1. The second byte is 06h, and the third byte is 44h. The meanings of these two bytes are unknown.

The remaining 812 bytes are encoded such that eight physical 7-bit bytes contain seven logical 8-bit bytes. The first logical 8-bit byte consists of the first 7-bit byte (at the low-order end) and one low-order bit from the next 7-bit byte (at the high-order end). The second 8-bit byte consists of the remaining 6 bits of the second 7-bit byte (at the low-order end) and two low-order bits from the third 7-bit byte (at the high order end). Etc.

After decoding the 7-bit data into 8-bit bytes, the song data is as follows:

bytes
(numbering from 1)
meaning
1-10song name
11-14time (see below)
15-22Locate 1 name
23-30Locate 2 name
......
179-186Locate 20 name
187-190Locate 1 time (see below)
191-194Locate 2 time (see below)
......
255-258Locate 20 time (see below)
remainingunknown

Times

Song and locate times are sent as 4-byte integers, representing the number of 48kHz samples since the beginning of the tape. The four bytes are sent high-byte first.

The zero time is some arbitrary point near the physical start of tape. The time shown on the BRC console and the ADAT front panels as '00:00:00' is sent in the SysEx messages as 5760000, which is 02:00:00. In other words, to extract the 'panel' time, you must subtract 2 minutes from the 4-byte integer value.

Return to Inventor's Page