Skip to content

Midi Support

dterrahe edited this page May 25, 2021 · 3 revisions

"Supported" Midi devices

As of 20210525 Input NG has been most extensively tested with the Behringer X-Touch Mini and contains custom code to deal with the specific features of this device. Everything else is treated as "generic midi" and may or may not work (well) or need some manual setup each time. A configuration framework (possibly in lua) to support additional features that special devices might provide is on the to do list.

Behringer X-touch Mini

The device should be in Standard Mode (not MC). Layers A & B are somewhat supported, but since the device does not send a notification when switching between layers, and since the updates to "hidden" rotors are ignored and the lights (both under buttons and the pattern used around the rotors) everything will only be updated completely after you press or turn something in the "new" layer.

The light rings around the rotors show a different pattern depending on whether the associated slider has a symmetrical +/- range centered around 0, 0-100 (or 0-1) or anything else. If linked to a combobox (or star rating) the rotor will step one light at the time. If the combo has many (more than 13) items (like the blending mode combo), the rotor will go around twice; the 1st time with one light one, the 2nd time with two adjacent lights.

For now, the rotor and the push button in it will have to be mapped separately. I have plans to have a fallback automatically let the push button reset the same slider the rotor is mapped to, but that needs some extra work, to make it configurable and individually overrideable.

Arturia Beatstep

Individual rotors can be configured to send absolute (0-127) values or changes (+/- 1,2,3,... in different encodings). Recommended setting is Relative #1 for all knobs with Knob Acceleration set to Slow (Off) or Medium. This can be configured with Midi Control Center (https://www.arturia.com/support/downloads&manuals for Win or MacOS). By default the dt midi module assumes for unknown devices that rotors use absolute encodings. So after startup it needs to be told that the device is sending relative moves. You do this by turning one of the encoders slowly left (down) 5 times. This allows the module to determine which of the several relative encodings is used. If you don't succeed switching encodings on the first attempt, you can reinitialise the input modules by pressing ctrl-shift-alt-I and try again. If you still have problems; mine were solved miraculously with this https://www.amazon.co.uk/WD40-Drying-Contact-Cleaner-250ml/dp/B00KPUBO2S

If you map the Beatstep's buttons to ratings, color labels or toggle buttons, they should light up when the corresponding element is switched on.

Behringer BCR2000

(and BCF2000?)

These machines are highly configurable so there are many settings that could complicate the interaction with the dt midi module. The tool BC Manager (available for windows and mac https://mountainutilities.eu/bcmanager) can be used to configure them. The easiest thing to do is to reset all encoders and buttons to their simplest settings. That's done (for the BCR2000) with this file bcr2000 all buttons and encoders.zip. You can send it to the machine with BC Manager or under linux with amidi. There's also a global setting called Dead time that determines how long the BCR ignores arriving messages after sending out updates. This is to avoid feedback loops, but for Input NG it means it blocks the adjustments send back immediately after each rotor move. So Deadtime needs to be set to 0.

Once configured like this, button and rotor lights should all work. The top row of rotors (or the only row for the BCF2000) support different light patterns (like the X-Touch Midi with some extra options and it has 15 instead of 13 leds). However configuring those is more complicated, and not yet implemented. It also seems to be slower, so may not be doable real-time for each update (like it is done for the X-touch). So at the moment only the 12dot pattern is used. For rotors linked to combos/dropdowns, just like on the X-touch the rotor light goes round twice; for the first 15 options only one light goes on, for the second 15 options, two adjacent lights will be on.

Loupedeck

(and Loupedeck+ but not their later non-midi devices) Going by the information provided here https://discuss.pixls.us/t/midi-controller-for-darktable/2582/92 most of the functionality of the first two loupedeck models (that are both midi based) should be supported, with the following exceptions and caveats:

  • ctrl/shift/alt cannot be mapped via Input NG yet
  • arrow keys can only be mapped to keyboard keys, not external devices, so you won't be able to use the loupedeck arrows to navigate the lighttable yet
  • the Hue/Sat/Lum buttons can be mapped to the notebook tabs in the color zones module but I don't know if the little lights next to them respond to update messages sent when the user switches tabs using the mouse, so they might get out of sync
  • the 8 sliders/wheels can be individually mapped to the elements of the graph in color zones
  • the knob presses can be mapped to any command but do not yet automatically default to resetting the slider that the knob rotation is mapped to. So they need to be set up manually for now. The good news is that the codes for knob turn and knob press match, so the generic fallback mechanism I have in mind here for the x-touch and bcr/bcf2000 will work for this too, once implemented.

Other than that, the loupedeck uses Relative encoding, so similar to the Beatstep it will need to tell the midi module at each startup (until a configuration system has been implemented). You do this by turning any of the knobs (or wheels) slowly down/left 5 times. Reinitialise the input layer with ctrl-shift-alt-I if it didn't work the first time so you can try again.

Clone this wiki locally