This is not as easy as it might seem!
Tempting though it might be to have a complete free-for-all common sense dictates that we need to define some standardised configurations. After quite a lot of thought I have concluded that these are they:
- Mini controller. One physical VFO, up to four encoders and 16 switches.
- Midi controller. Up to two physical VFOs, up to six encoders and 32 switches.
- Maxi controller. Two physical VFOs, eight encoders and 32 switches.
Until a few days ago all my development work had been on the basis of what we now know as the Maxi controller. Thinking about the Midi and, especially the Mini controllers made me realise that there was a need for a new class of encoder and switch controls.
The Mini controller and, potentially the Midi controller have only one physical VFO. As we wish to control two slices, we need a switch to select which slice the VFO knob is controlling at any one time. I soon realised that this is also true for encoders and switches. For example, I have a switch definition that allows the user to lock VFO-A and another switch to lock VFO-B. In a maxi controller this makes complete sense but less so in the Mini controller, where we may feel that we can ill-afford the space for two physically separate switches.
The answer, of course, is to use the VFO switch to also switch all these other switches to operate on VFO-A or VFO-B, whichever is currently selected. The same logic applies to the encoder functions.
So, using the VFO lock as an example, we actually have three potential functions:
- Lock VFO-A
- Lock VFO-B
- Lock selected VFO
- Filter width for VFO-A
- Filter width for VFO-B
- Filter width for selected VFO
So we now have a switch function that permits the user to map the physical VFO to either VFO-A or VFO-B. It's obviously rather important to know which VFO is selected and I've spent some time thinking about that too.
|A single VFO system operating in split mode, |
with the VFO controlling VFO-A
Finally, and in a related development area, I've now implemented user selectable profiles. This lets the user change the layout of his controller at will. In fact it is the way I tested the mini controller controls - switching between a maxi controller and mini controller configuration simply by loading a different profile.
Of course the profile manager also had to be updated to know about the new class of switched VFO controls. That too seems to be working well.
All in all a lot of progress along the way to a single Host Controller code set that can support any controller configuration.