Reading the FCB1010 Sysex

By FritterAndWaste, 16 December, 2024
Forums

Hi

Thanks for your product, very useful. 

In my retirement I am building an app for my personal use to automate aspects of performance which includes changing presets in Guitar Rig 6 so I am kind of familiarising myself with Midi which is going well. I decided I would go one step further and see if I can read and decode a sysex message from the FCB1010 but I've hit a problem. This is an extract from my own notes which partially represent my understanding of the sysex format:

The string below is an extract from an FCB1010 sysex dump. The string starts with a 7 byte header followed by a series of 8 byte packets separated by spaces. Each preset is represented by 16 bytes after conversion from 7 bit format. The conversion decodes 8 byte packets each of which translates to 7 converted bytes. The 8th byte of the packet contains ‘most significant bit’ (MSB) values for each of the 7 preceding byte. Below, the end of each preset indicated by a '|' and each 8 byte packet is separated by a space.

NB this would be more legible in a fixed width font, e.g. Courier

-----Header-----        ---------------Preset 1--------------- ---------------Preset 2--------------- ---------------Preset 3--------------- ---------------Preset 4------------------

                        [       7               7           2] [     5             7            4   ] [  3            7             6      ] [ 1          7               7          1

                        P1P2P3P4P5C1CVsb C2CVACALAUBCBLsb BUNN P1P2P3P4P5sb C1CVC2CVACALAUsb BCBLBUNN P1P2P3sb P4P5C1CVC2CVACsb ALAUBCBLBUNN sbP1 P2P3P4P5C1CVC2sb CVACALAUBCBLBUsb NN

0xF0002032010C0F        040000000000003F 000007007F080001 7F29|00000000007C 0000000007007F05 08007F2A|00000070 0000000000000717 007F08007F2B|0040 000000000000005F 0007007F08007F00 2C

In each 16 byte converted preset, the 16th byte contains a note and the way that I have set up the FCB1010 is such that these should increment for each of the 10 presets from hex 29 to 32 (decimal 41 to 50). These values are highlighted in bold above. The MSB values (the last of each packet) are highlighted in green. Also, regularly spaced throughout the above data is the 6 byte sequence 07 00 7F 08 00 7F which fits with the settings I have applied to the expression pedals (these bytes contain CC1, CC1 start val, CC1 end val and ditto for CC2).

However, I am intrigued to see that many of the packet trailer (MSB) bytes in the above data are non-zero. For example:

 3F,                        01,                       7C,                        05,                        70,                       17,                        5F                              

which, in binary would, I think, become

 00111111,          00000001,           01111100,           00000101,           01110000            00010111               01011111.

So this surely suggests that, in the 3F case, for example, 6 of the 7 preceding bytes need to be adjusted. My question is why would that be the case when the documentation claims “The transmitted Bytes’ MSBs (most significant bit) are always zero (MIDI)”? I accept that the documentation also states “The MSBs of the Control Change Value bytes contain the status of relay (Switch) 1 and 2 respectively” but surely that would only ever require at most 2 bytes in any 7 byte packet to require adjustment? Also, I should have both the relays set to ‘off’ in all my FCB1010 presets anyway so I would not expect the associated bytes to be affected.

Should I just be ignoring every 8th byte and, if so, could I do the same when writing data back to the FCB1010?

Please note that I have no intentions whatsoever of developing anything for commercial purposes. It's just a bit of fun.

Many thanks.