System mapowania skrótów został najbardziej szczegółowo przetestowany z Behringer X-Touch Mini i zawiera niestandardowy kod do obsługi konkretnych funkcji tego urządzenia. Wszystkie inne urządzenia są traktowane jako „ogólne midi” i mogą, ale nie muszą działać (dobrze) lub wymagać za każdym razem ręcznej konfiguracji. Struktura konfiguracji (prawdopodobnie w Lua) do obsługi dodatkowych funkcji, specyficznych dla urządzenia, znajduje się na liście rzeczy do zrobienia.
If you succeed in getting a midi device up and running that hasn’t been mentioned below, it would be greatly appreciated if you would provide feedback in order to assist others, if any special steps are required. You could do this either by submitting a documentation pull request to amend this page or by filing an issue containing the necessary information. Alternatively you could read or respond to any of the (closed) midi or “inputng” issues or pull requests in the main darktable repository if you need additional help or guidance yourself.
Behringer X-touch Mini
Urządzenie powinno być w trybie standardowym (nie MC). Warstwy A i B są jednak w pewnym stopniu obsługiwane, ponieważ urządzenie nie wysyła powiadomienia podczas przełączania między warstwami, a aktualizacje „ukrytych” wirników i świateł (pod przyciskami i wzorem, zastosowanym wokół wirników) są ignorowane, wszystko zostanie całkowicie zaktualizowane dopiero po naciśnięciu lub przekręceniu czegoś w „nowej” warstwie.
Pierścienie świetlne wokół wirników pokazują inny wzór w zależności od tego, czy powiązany suwak ma symetryczny zakres +/- wyśrodkowany wokół 0, 0-100 (lub 0-1), czy cokolwiek innego. W przypadku połączenia z listą rozwijaną (lub oceną gwiazdkową) rotor będzie przesuwał się o jedno światło na raz. Jeśli menu rozwijane zawiera wiele (więcej niż 13) pozycji (takich jak menu rozwijane trybu mieszania), rotor obróci się dwukrotnie; pierwszy raz z włączonym jednym światłem, a drugi raz z dwoma sąsiednimi światłami.
Arturia Beatstep
Individual rotors can be configured to send absolute (0-127) values or changes (+/- 1,2,3,… in different encodings). The 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 , available for Windows or MacOS. By default the darktable midi module assumes, for unknown devices, that rotors use absolute encodings. After startup it therefore needs to be told that the device is sending relative movements. You can 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, you could try this .
Jeśli zmapujesz przyciski Beatstep do ocen, kolorowych etykiet lub przycisków przełączania, powinny się zaświecić, gdy odpowiedni element jest włączony.
Behringer BCR2000
( i prawdopodobnie BCF2000)
These machines are highly configurable so there are many settings that could complicate the interaction with darktable’s midi module. The BC Manager tool (available for Windows and MacOS) can be used to configure them. The easiest thing to do is to reset all encoders and buttons to their simplest settings, which can be done (for the BCR2000) using this file . You can send it to the machine with BC Manager or (under Linux) with amidi. There’s also a global setting called “Deadtime” that determines how long the BCR ignores arriving messages after sending out updates. This is to avoid feedback loops, but for darktable it means that it blocks the adjustments sent back immediately after each rotor move. So Deadtime needs to be set to 0.
Po skonfigurowaniu w ten sposób wszystkie lampki przycisku i wirnika powinny działać. Górny rząd rotorów (lub jedyny rząd dla BCF2000) obsługuje różne wzory świetlne (jak X-Touch Midi, z kilkoma dodatkowymi opcjami i ma 15 zamiast 13 diod led). Jednak ich konfiguracja jest bardziej skomplikowana i nie została jeszcze zaimplementowana. Wydaje się również, że jest wolniejszy, więc może nie działać w czasie rzeczywistym dla każdej aktualizacji (tak jak ma to miejsce w przypadku X-touch). Tak więc w tej chwili używany jest tylko wzór 12-punktowy. W przypadku rotorów połączonych z listami rozwijanymi, podobnie jak w przypadku rotora X-touch, światło zaświeci się dwukrotnie; dla pierwszych 15 opcji zapala się tylko jedna kontrolka, dla kolejnych 15 opcji będą się świecić dwie sąsiednie.
Loupedeck
(and Loupedeck+ but not the later non-midi devices)
Going by the information provided here , most of the functionality of the first two loupedeck models (both midi based) should be supported, with the following exceptions and caveats:
- the Hue/Sat/Lum buttons can be mapped to the notebook tabs in the color zones module but the little lights next to them may not 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
Poza tym, ponieważ loupedeck używa kodowania względnego (a więc jest podobny do Beatstep), będzie musiał informować moduł midi przy każdym uruchomieniu (dopóki nie zostanie zaimplementowany system konfiguracji). Robisz to, obracając dowolne z pokręteł (lub kół) powoli w dół/w lewo 5 razy. Ponownie zainicjuj warstwę wejściową za pomocą Ctrl+Shift+Alt+I, jeśli nie zadziałało za pierwszym razem, aby spróbować ponownie.
Korg nanoKONTROL2
Urządzenie należy najpierw skonfigurować za pomocą aplikacji Korg Kontrol Editor, aby było w trybie CC, a każdy przycisk powinien być ustawiony na typ notatki i zachowanie przycisku Momentary. Aby sterować oświetleniem w przyciskach, należy ustawić tryb LED na External. Należy zauważyć, że przyciski Track i Marker nie mają w sobie diod LED.
There is an Kontrol Editor profile available here which can be loaded using the Windows application to directly configure all these settings to correctly work with darktable.
additional midi configuration
If darktable is compiled with portmidi it will at startup try to open up to 10 midi devices in the order it finds them. On the command line you might see something like this:
Two issues can arise:
- a device you don’t want to use might be opened anyway (and potentially cause inappropriate behavior, like starting a fireworks show prematurely (see this document , or
- devices might appear in a different order at the next startup (for example because they are plugged into a different usb port). Since configurations are stored with the device number only, reordering would cause an incorrect layout to be picked up.
You can specify which devices to explicitly load in a specific location and which ones to skip using the configuration parameter preferences > miscellaneous > interface > order or exclude midi devices. To skip loading the BCR2000 in the above example and to fix the other two devices into the number 0 and 2 slots, you could set this config parameter to “BeatStep;dontuse;X-TOUCH;-BCR2000
”. This would leave the BeatStep as device midi0, always leave midi1 unused and would not load the BCR2000 at all, but if any other devices are connected, they would appear as midi3, midi4 and so on. Adding “;-
” at the end would prevent any further devices loading. Or, if you just specify the configuration parameter as a single minus sign “-
”, no devices will be loaded at all.
Midi controller knobs can use several different “encodings”. The default, absolute, sends a value from 0 (all the way left) to 127 (all the way right) – sliders can also use absolute encoding. Relative encoders send a “down” value if you turn them left and an “up” value if you turn them right. So slowly turning one of those “up” would send “1, 1, 1, 1,” for example. But depending on how many bits are used and what encoding, a slow left turn might be 127 (8 bits -1) or 63, 31 or 15. Or even 65. If nothing is specified in this preference option, midi devices are assumed to use absolute encoding. But if the first five messages received are identical, it is assumed that the user has slowly turned a knob left/down and the encoding is deduced from that and displayed in a toast. The encoding is not remembered for each device, so this maneuver needs to be repeated at each startup. To define the deduced encoding for the next startup you can add this parameter to the “order or exclude midi devices” setting. For example “Loupedeck:127
”.
Some midi controllers have keys with a light beneath them. These can be used to toggle settings and show the current position by having the light on or off. In this case, darktable checks periodically (a few times a second) whether, say, the position of an on-screen toggle button has been changed, and sends messages to any linked midi device buttons to switch their light on or off. But if an unknown device has unintentionally been connected, this could be undesirable. So by default darktable waits until a “note” message is received from a midi button before sending any “note” light on/off messages back for that button. That way also no more buttons are addressed than exist on the device. If you immediately want all button lights to be used (rather than having to press the highest note once for each session) you can specify the number of buttons in the “order or exclude midi devices” preference, for example, “BeatStep:63:16
”.