A while back I put together a fairly simple MIDI controller using a Leonardo board and the Control Surface library. The controller works well however it has one problem. I'm using it with audio software plug-ins (EQs mostly) and when I switch from one plug-in instance to another the software jumps to whatever the current knob value is as soon as the knob is moved. This is a nuisance as it means I'm constantly losing the parameter's current setting.
I've seen other MIDI controllers that "pick-up" the current parameter value and don't change it until the controller is set to it.
Is it possible to do this using the Control Surface library? If so, where can I find an example?
If you change between different plugins using Control Surface Banks, there's the CCSmartPotentiometer class.
This works well as long as you don't change the value in the software using the mouse, because the Arduino has no way of knowing that, unless your DAW sends those changes over MIDI as well.
If you switch between plugins using a mouse or keyboard, then there's again no way for Control Surface to know this. In that case, it makes much more sense to implement the “smart pick-up” in the DAW or plugin itself rather than in the MIDI controller, because the latter simply doesn't have the necessary information to know when to activate/deactivate the control.
Right, I get it and can see the problem. I'm not sure if plug-in controls can transmit MIDI, nor can I see a way to change to a different plug-in instance without using the keyboard or mouse. I'll dig into this a bit deeper and see if there are any ways forward.