A serial packet between the x0xb0x and the c0ntr0l application is composed of the following parts:
; Type (1 byte) : The type of message; e.g. read pattern, write pattern, etc. ; Size (2 bytes) : the size of the _body_ of the message. Can be 0 if the message has no arguments and no data.
; Body (N bytes) : The body of the message contains command arguments or command data (e.g. a 303 pattern), both, or sometimes neither. The number of bytes contained in the body varies from message type to message type, and the correct size is always stored in the Size field in the header.
; CRC (1 byte) : The 8-bit CRC of the entire message (Header + Body). The CRC ensures that the message was correctly framed by the reciever (i.e. that the first byte at the receiver was the Type field of the header and not some random byte in the middle of the message) and that the there were no bit errors during transmission.
The format for the listing below is something like this:
The following messages are generated by the c0ntr0l application and sent to the x0xb0x over the serial port. Many of these messages will cause the x0xb0x to immediately respond with a message of its own. These response messages are described in the section below entitled "x0xb0x MESSAGE TYPES". The c0ntr0l application will wait for the response until the serial port times out, at which point it will print an error to the user to notify them that the command failed.
The following messages read and write individual patterns to/from the x0xb0x EEPROM.
Tell the x0xb0x to load a pattern from EEPROM into main memory so that it plays when the R/S key is typed on either the computer or on the synth. Another way to look at this is that you are setting the BANK and LOC using the knobs and switches on the x0xb0x, which you can do individually using the other messages in this section.
These messages are equivalent to setting and polling the state of the R/S button on the x0xb0x. Basically, they tell the x0xb0x sequencer to start or stop.
The x0xb0x can return one of the following packets in response to the c0ntr0l messages described above.
An error code to help debug why things went wrong
The current state of the R/S button. i.e. whether the sequencer is playing or not.
Future features (i.e. implement these in a future release…maybe….) :