I’m working on an application using tracktion_engine and would like to add support for Mackie MCU control surfaces. I know that tracktion_engine has built-in support for these controllers and this works as expected, but I would like to customize this behaviour.
This would include things like assigning different actions to the MCU’s Function keys or making the Master fader control some application-specific parameter rather than the master volume of the Edit.
te::ControlSurface and overriding
acceptMidiMessage to customize how commands coming from the control surface are handled would probably work.
But the other direction (sending updates based on the edit state to the control surface) seems to be more problematic.
te::ExternalController::updateDeviceState will update the master fader of the controller based on the master volume of the edit (which is not the intended behaviour for the use case mentioned above) and I haven’t found a clean way to change this. At least not without extensive modifications to the tracktion_engine codebase, which would make things difficult to maintain in the future.
What would be the best way to go about this?