One way to kick a MDP2 layout up a level is to initialize all the controls to match the target hardware. The synchronization data will typically be sysex. Even when you use CCs to control board parameters, getting a response from the board may be sysex - at least the boards that I am familiar with. I would be interested to hear of a board that will report current settings via CCs. I have heard mention that the Octatrack might send values on receipt of a Cc 61 but have not been able to confirm what it sends.
Two ways for a board to report controls are a bulk sysex dump or individual sysex messages for each parameter.
Bulk Sysex Dump
Advantage is that a single request message to the board will return all necessary data, but the disadvantage is that you have to program Streambyter code to break into individual messages for the controls to recognize.
For a few messages, handcrafting the Streambyter code is possible. But for larger sized messages, it is faster and more accurate to use a spreadsheet to “auto-generate” the necessary Streambyter code. See image one for an example.
Notes - since the max number of values in a Streambyter message is 12, a second step is necessary to break longer SNDs into two pieces - this is not shown, but is also automated. If a checksum is included, use 00, since MDP2 does not enforce checksum validity (a good thing).
An example of this approach is in Ibo Kai’s latest update at: https://mididesigner.com/qa/8086/layout-yamaha-reface-cs-editor-update
Individual Sysex Requests
So the advantage / disadvantage here is exactly the opposite of above - no decode necessary for MDP2 to recognize the messages, but you need to generate individual request messages for each parameter. However, there is a quick way to do this - use a “scanner” control that can send multiple request messages. At most three “scanners” will be necessary - one each for one byte, two byte, and four byte sysex messages, since a scanner can cover the full four byte midi address range. Again, the scanner values are best built in a spreadsheet, then loaded into the named ticks for the scanner control. Due to the way the “scanner” works, the first value has to be repeated as the last value.
More details on the scanners are at: https://mididesigner.com/qa/6964/tricks-settings-scanner-transmit-multiple-messages-control?show=6964#q6964
My layouts use this to synchronize to the Roland settings, usually one page at a time via a “Load” command.
Layout sends CCs, but Reports Back Sysex
In this case, you have two approaches:
1. Uses Streambyter to translate the sysex into Ccs for the controls to receive. I do not have an example of this at present.
2. Build hidden supercontrols to read the sysex and position the Cc sub controls. One side effect of this that the subcontrol will echo the setting back to the board when positioned by the supercontrol. Since this should be the same value just reported, it should have not impact. I use this with the RD2000 tone wheel organ.
Some boards have a transmit edit function, which will transmit edited values as they are made. This can keep a MPD2 layout synchronized in real time.
My board just will not talk back to me
In this case, you can use the MDP2 presets (global or separate controls) to bring the board into a configuration that matches the MDP2 layout settings. This will take a little work hand-matching controls, then saving. Send all is another approach.