Appendix B: System Exclusive Implementation
89
Venom User Guide
Since there is no check-sum needed for sending individual parameters, there is no need for the host program
to send an ACK/NAK packet to confirm that the data was received OK. ACK/NAKs are only used for patch
dumps that make use of the data format detailed in the following section (see “<data> Format” on page 89).
<data> Format
The internal data for various parameters is stored as 8-bit data, therefore it is necessary convert that data into
a 7-bit format to be compatible with MIDI SysEx data. Since the data-dumps are the only types that need to
send 8-bit data blocks, only Type IDs 0-7 need to be converted.
The following tables show how the data is converted from the what is stored internally. The first byte of the
MIDI sequence holds a compilation of the top bits from the seven bytes. The trailing seven data bytes, then
have their top bit set to 0.
Internal Data, 8bits x 7bytes
MIDI Data, as 7bits x 8bytes
<cs> Checksum
The tail end of the SysEx message includes a checksum byte, followed by EOX (0xF7). The checksum is calcu-
lated as the sum of all bytes taken from the <cmd> byte and stores 0-Total with the top bit set to 0. When a
SysEx is received, it totals up all values from the <cmd> byte including the checksum and the result in the bot-
tom 7 bits should be 0.
The checksum value is only used on data-dumps which make use of the data format detailed in the proceeding
section (see “<data> Format” on page 89). As a data dump can generate long SysEx messages there’s a possi-
bility Windows may end up corrupting the data, so the checksum ensures that the data is always valid.
SysEx Strings
String data is limited to 7-bit ASCII. However, string data will still be transmitted using the <data> format de-
tailed above.
Data [H] Description
F0
00 01 05
21
<id>
02
0C
01
34
05
7F
F7
SysEx ID
M-Audio Manufacturer SysEx ID
Class ID
Device ID
Cmd ID = Write Data Dump
Addr1 ID = Multi Part2 Patch Param
Addr2 ID = MSB of param 180
Addr3 ID = LSB of param 180
MSB 7-bits of data value
LSB 7-bits of data value
End of SysEx ID
Byte 0......0 1......1 2......2.. 6......6
Bit 76543210 76543210 76543210.. 76543210
Byte 6543210 0. ....0 1.....1.. 6.....6
Bit 07777777 06543210 06543210.. 06543210