Very nicely constructed answer, good work!
In the meantime I've been working for the past few days and have my application working and controlling two keyboards.
I have two preset groups, one for each synthesizer, one group has three knobs controlled by the preset supercontrol, the other has two.
The three knobs in the first preset group are patch, bank, and volume. The second group only requires patch and volume.
The synthesizer I'm talking to requires a patch change to follow a bank change and will not perform the bank change until the patch change arrives.
I had problems with this initially until I played with it and watched the log window long enough to figure it out. I was able to remedy the issue by removing the knobs from the preset knob's subcontrol list and adding them back in starting with the bank knob. I gather the order of the list controls the order of MIDI msg generation when the knob is changed. Anyway that fixed it.
I also created 20 buttons to use for random preset selection. From the comment you made the other day on one of my other posts I figured out that i had to play with the "on" values to scale them which I eventually worked out. BTW the group has 40 named ticks for now and I'm 1/2 full already and BTW2 thanks the formula in the article above.
I had some teething issues in regards to actually getting the MIDI data stream cleaned up. For example I had to tell the supercontrols not to send their own values etc.
There still are a couple of places where I couldn't stop controls from emitting messages so I did things like map the messages to unused midi channels so they were harmless.
My preset knob has relations set up with a recall button and a store button and also increment and decrement buttons. Recalling a preset can be done by turning the knob and hitting recall, using inc/dec and hitting recall, or using one of the random access buttons and hitting recall.
Once I had all of that working I disconnected the recall button so changing the knob by pressing a random access button would select a preset. This changes it to a one button press select rather than a two button select.
Here I ran into problems, my patch selection stopped working reliably. Looking at the midi data stream I found the bank, patch and volume message order was different.
Interestingly enough they are sent in the correct order when the recall button is in use.
There's also an issue with the random access buttons causing all of the preset sub controls to emit midi messages with the present values when a button is pressed. I guess my question here is why do they trigger anything except the knob selecting a new preset until the recall button is pressed?
All and all I'm happy because I have a very functional application which I can use Friday night.