Bulk Dump Format for SensOrchestra


- storage format for SensOrchestra parameters
- to be used by bank loader or editor software as well as humans
- ASCII-format for easy editing with any text editor (while no decent SO-editor...)
- easier to edit than full sysex messages
- concise format without overhead of MIDI sysex protocol
- easy and uniform two-way-conversion between BDF and SYX-format

file format [sample]

#SOA Ultradynamic setup for xy
032C00034D on SOchip 03 set MaxContValGrain for patch 1, sensor 4 to 4D
0A0400000A on SOchip 0A set MIDI basic channel to 10
0010000001 on SOchip 00 set deviceId to 01

line format:
Comment lines start with a # in the first column and can be interspersed at any position in the file. It may be a good idea to include a short explanation of a file's contents in the first line(s), like in this example:
#SOA SensOrchestra BDF description line, Version A
Ultra.. what is in this setup

Lines not starting with a # are considered parameter data lines. We expect 5 hex bytes stored as 10 ASCII bytes here:
byte1-2 = deviceId
byte3-4 = parameter no.
byte5-6 = index
byte7-8 = subindex
byte9-10 = value
anything on the rest of the line is ignored; thus comments are allowed here.

The data have to be converted from BDF format to SO sysex format to be usable for MIDI communication. The reply data set has to be converted back to BDF format for permanent storage.
See the 2 lines from the example above, converted to SO SYX messages:
F0 7D 46 48 01 01 00 00 03 7E 61 2C 00 03 04 0D F7
F0 7D 46 48 01 01 00 00 0A 7E 61 04 00 00 00 0A F7

Note: BDF-byte5 (value) is split in DataHi and DataLo bytes of the SO SYX format.

Also note, that the BDF format does not store the instruction byte, which has to be provided by the application, depending on the usage. In case of a parameter setting, both an adjust/request-message (instr-byte 61) and an expected-reply-message(instr-byte 11) will be derived from a single BDF-data-line. After sending the adjust/request-message, the actual reply is compared to the expected-reply for error detection. In case of a parameter request, only a request-message (instr-byte 21) will be created. When converting from SYX to BDF, the instruction byte is stripped.