darktable midi controller - setting lights and buttons

I’ve got a Behringer CMD-LC1 controller I want to use with darktable.

The rotary knobs work fine-tune the behavior. But the buttons and lights are not obvious.

  • How can I assign slider values to buttons?
  • How can I tune the lights around the rotary knobs?
  • How can I set the colory of the buttons?

Seems like lights are mapped depending on if sliders and knobs are relative or absolute: darktable 4.4 user manual - midi device support

The lights around the slides move, but I’d like to tune how much.

The lights on the buttons sometimes change color, but It is not really defined how to adjust the color.

not clear that you can tweak that, @dterrahe any input here?

“normal” midi devices (like the supported behringer devices in the x-touch and bcx2000 series) have the leds in a ring around an encoder light up depending on the current value (in 0-127 range) of the encoder (which can be set by sending the same kind of CC messages back to it that it sends when turned). It seems that this device requires a specially crafted message with a value in the 1-16 range (so they may wrap around 8 times?). The dt midi handler is currently not flexible enough to deal with all such possible variations. It is theoretically possible to implement a configuration layer (in lua) that would be able to deal with anything, but there has been no interest in it and without community input it would be impossible to design and test such a beast.

First create a shortcut linking the button to a slider. Then change the effect of the shortcut to “set” and change the speed of the shortcut to the value you want to set.

Similar to encoders, for buttons the midi handler sends a note on value when the linked toggle or similar is switched on and a note off value if it is off. For most midi devices I’m aware of, this switches on and off the light in the button. This device wants a number between 0-8 to select one of 4 colors and whether it blinks or not. 0 is amber backlight and 127 is completely off. So I suspect dt only toggles between amber and green? Again, additional configuration should really be done via a fully flexible framework.

Or you could try to play with the code and make local changes (that are unlikely to be integrated upstream). Look in src/libs/tools/midi.c functions _update_with_move and _update_devices.

2 Likes