Building non-sequential Bank / Program Changes
Had a similar problem to solve, and wanted to share my approach in case others had not discovered it. A search has not turned this up, so maybe new.
I needed to group a set of discontinuous patch changes, as follows:
84, 1, 127
84, 1, 128
84, 2, 1
84, 2, 2
…
84, 2, 8
84, 28, 1
…
84, 28, 31
No problem, made three separate bank/program change knobs, then linked them together as sequential sub controls.
Except, you get the correct value from the active subcentral, but the other two also send their min or max values.
So, I just sliced the problem the other way.
First subcontrol knob is msb/lsb, with 41 ticks.
First two midi value is 10753 (84 * 128 + 1)
Next eight are 10754 (84 * 128 + 2)
Last 31 are 10780 (84 * 128 + 28)
Second subcontrol knob has the program change sequence, also 41 ticks.
126 (subtracting one to get the Midi Value)
127
0
1
…
7
0
1
…
30
Now a third control, 41 ticks, that is the master, and has contains the patch names.
Link to the sub controls, and the channel controller, send on release only. Ensure the MSB/LSB is first subcontrol. MD appears to respect order of sub controls for transmission, but cannot confirm.
I have a workflow with spreadsheets to build my load values, so the workaround is actually easier to implement.
This will be included in RD 2000 Manger, ver 1.05, coming soon.