Midi Controller for Darktable

any news on this subject, i think would be a great addition a way how to work with that!

There is a proof of concept implementation of a stand-alone module that just provides a mapping of midi controller knobs to darkroom sliders on [WIP][RFC] Add support for MIDI controllers mapping to sliders by dterrahe · Pull Request #3722 · darktable-org/darktable · GitHub

As is clear from the discussion, this is highly unlikely to be merged into darktable, because it should really be properly integrated in the input layer, which should be made more configurable for that (and other) purpose(s). That’s why I made no attempt at all yet to map note keys to commands, but it is possible to achieve this using external programs.

For Windows, there is a stand-alone dll for version 3.0.1 and same additional configuration for behringer x-touch mini.

1 Like

I’ll contribute to a loupedeck fund for you if it means there would be support for it in the future. I got one the other day and I absolutely love it, but unfortunately I had to switch to Lightroom classic in order to use it

As of now, none of this is “supported”. There will need to be significant infrastructure work done in darktable itself to enable clean integration of this module (with “note” key mapping support as well).

Separately, I cannot find any information on what protocol loupedeck uses; it does not seem to be a midi controller and requires an sdk to develop a plugin (which so far is only available for Loupedeck CT). So it looks very unlikely that I would be able to do anything with it.

If I’m wrong and it actually does send MIDI codes, you should be able to define your own mappings/layout. In which case I’d love to hear your results.

1 Like

I’ll contribute if funding is needed - just tell me to what paypal it shall go

Thanks for the offers, but not a matter of funding, I’m afraid. Question of manpower for the required infrastructure work and documentation for the specific device support. But with proprietary solutions like Loupedeck, my feeling is that documentation will be hard to come by. With hardware my preference is the same as with software; I’d rather have a less polished, but open/standard, solution than a closed one. At least then I can (help) do some of the polishing myself.


I contacted the tech from Loupedeck in december 2018 :

Hi Aurélien,

currently we do not have plan to compile our service SW for Linux. Our roadmap is full so we do not have time for it. However, the device actually works as midi device. Just create/install a midi listener and you can record the notes and ID’s it is sending. The dials are working so that turning right is +1 and left -1. Making things working this way will be relatively simple. However, you will not have our UI available this way.

For MAC and Windows you can build integration using our SDK, however, you cannot make this Loupedeck plugin open source. This method enables you to use our UI to make configurations. Basic architecture is to create a socket server inside of you SW and make the plugin discuss with it. Please do not expose our API directly but make a conversion.
However, we will not use midi in future. It is like this only for LD and LD+

So I just abandoned the project after that email.

1 Like

@beachbum and @Alex_Davidson that sounds like for LD and LD+ you are in luck; the module in the dll I posted in the PR I linked to above should be able to see the device if it really is recognised as midi by Windows. You’ll have to select it as the active input using the PmDefaults application.

If it works, you should see notifications when you turn a knob that has not been mapped yet and you can then define the mapping yourself (using ctrl-M). I’d suggest posting a configuration you are happy with back to the PR.

There are some hard coded variables in the code now for x-touch midi that associate the controller messages sent by turning a knob to the note message sent by pressing a knob. If you figure out what those respective codes are, and what the device name is, I could add a dedicated override for you. Or save/load those settings from the midirc file.

1 Like

In the MIDI PR of @dterrahe @houz mentioned a need for generic input layer in darktable (which was later confirmed by for example a PR being needed to enable accelerator keys for prev/next dropdown items)…


I proposed starting dedicated thread for discussing inplementation. Recently @AlicVB managed to pull off huge lighttable rewrite (I’m yet to test it…) and it seems like work this magnitude is possible.

In PR @houz mentioned having written something down, I’m very interested in any discussion on the subject :slight_smile:

I also remember that thre are issues/FRs raised by @aurelienpierre about support for controllers like 3d navigator etc.

and generic input layer could solve

(in my case I’ve got huion tablet that works quite well and has couple function keys)

I uploaded a new release of the module for darktable 3.0.1 here [WIP][RFC] Add support for MIDI controllers mapping to sliders by dterrahe · Pull Request #3722 · darktable-org/darktable · GitHub

It now supports note keys and does not require external programs so is much easier to configure. It comes pre-configured for x-touch mini and BeatStep.

@beachbum and @Alex_Davidson if you can send me the midi codes that the LoupeDeck or LoupeDeck+ send, I can include an example default template. You could use Pocket MIDI for example. Clearly indicate which key-presses, knob turns (left and right) and knob presses generate which codes. Also give the exact name (including capitals) that they are identified by in Windows MIDI.


Is the Loupedeck even a midi device?

According to the post by Aurelien above ( Midi Controller for Darktable - #84 by aurelienpierre ) that is what he was told by LoupeDeck. But only LD and LD+, not any newer models.

1 Like

I’m glad to help! I have the program loaded up, but before I get started, could you clarify what you mean by “exact name that they are identified…”?
As far as I can see, I press a button and it just shows a code in the midi monitor window. I don’t see anything in the midi output monitor or the system exclusive window.
I wanted to ask before doing a bunch of work and finding out it’s useless because I didn’t enable some setting somewhere

Edit: If anyone else knows what he’s talking about please let me know, I’d like to do this tonight since I’m available now but might not be available later on

Thanks Alex! With “exact name” I just mean the name the MIDI system uses to identify the Loupedeck or Loupedeck+. So that’s simply the devicename you selected under “InputPort”. Including the correct capitalisation.

You don’t have to edit the data from MIDI In Monitor too much; I’m happy to see a header with a list of buttons or knobs and then a list of codes that you get when you turn and press them in the same order. So it would look something like:

BA 01 30
BA 01 31
9A 00 7F
8A 00 00
BA 02 21
BA 02 22
9A 01 7F
8A 01 00
BA 03 02
BA 03 03
9A 02 7F
8A 02 00
BA 04 01
BA 04 02
BA 04 03
9A 03 7F
8A 03 00
BA 05 01
BA 05 02
9A 04 7F
8A 04 00
BA 06 01
BA 06 02
9A 10 7F
8A 10 00
9A 11 7F
8A 11 00
9A 12 7F
8A 12 00

Thanks in advance!

BTW have you tried to install the darktable module to see if you could map one of the knobs or sliders yourself?

Oh that’s what you meant. It seems obvious now, hehe. Anyway, I haven’t tried the plugin with Darktable yet but I’ll try that later today. For now I have all of the midi codes in this google doc along with a few notes.

The Hue Saturation and Lumination might not be super straightforward to implement and the functionality of the color wheels is a little strange, but I went into those details in the doc.

Many thanks Alex! Much appreciated.

I’ve put a very basic configuration file together here darktable/midirc-Loupedeck+ at da58603578b055521540af87d911578da8a9c1cf · darktable-org/darktable · GitHub

Please put it in C:\Program Files\darktable\share\darktable\midi
Also use PmDefaults to select the loupedeck+ as both input and output device (I’m not giving you a .reg file to do this “automatically” because I’m not sure if the “+” in the name would work).

Also pay attention to the last comment I put in my installation instructions about activating all modules.

There are some issues with fully supporting the Loupedeck with the current code. The color sliders cannot be used, because the “color zones” module doesn’t expose the values of the individual colors as sliders.

If that gets fixed, in theory, I could map the Hue, Sat and Lum keys to switch between different “pages” in my module. But then each of the keys and knobs that don’t change between pages will need identical configuration on each page.

For now, please give this setup a go and let me know what does and what doesn’t work.


Hi…I’m on Linux, for the longest time I was using Raw Studio, but when I changed distros, it was not available for that distro (Mint 18) so now I use Darktable. Took me a while to get used to the workflow and I kinda hated it at first, but now it’s growing on me. Probably not as good as the windows programs but it’s also free and open so there’s that.

Is this script required for the Linux versions of DarkTable 3.8.0? I’m using a Loupedeck+ and, according to the documentation shown here, the Loupedeck+'s basic functions should work. But, I’m not sure if that’s the case for the Linux release. I assumed it to be plug and play for installs on both Ubuntu and Windows. My assumption seems incorrect.

The loupdecks should work out of the box, but without any keys pre-mapped. The input system implemented in 3.8 is completely different from the 2 year old midi prototype and uses a different configuration format. Nobody has yet submitted a template for the loupedeck(+), but it shouldn’t take too much time to set up the mappings for all of the buttons yourself, if you know the modules they should link to.

Going back to this old post; https://github.com/darktable-org/darktable/pull/12375 implements a feature specific for the bcr2000/bcf2000 that changes the pattern of the rings of indicator lights around the controller dials to indicate if a value is 0-100%, -x to +x or otherwise.

1 Like