MIDI-Geräteunterstützung
🔗Einführung
MIDI ist ein Kommunikationsprotokoll, das in vielen elektronischen Musikinstrumenten (“Pianos”) genutzt wird, in digitalen Studio-Einrichtungen (“control surfaces”) und auch in ernsthaften “Photobearbeitungs-Tastaturen” wie Loupdeck/Loupdeck+ (aber nicht in deren späteren Produkten. Solche Einrichtungen weisen üblicherweise Tasten/Knöpfe auf und öfters auch Enkoder (Knöpfe/Rotoren) und Regler (Schieber). Knöpfe sind dabei öfters beleuchtet, was diese sehr geeignet macht zum Umschalten von Eigenschaften in darktable, weil die Beleuchtung den gegenwärtigen Status (Ein/Aus) anzeigen können. Enkoder und Regler sind ideal für die Nutzung am Bildschirm, mit Schiebern in Bearbeitungsmodulen. Sie können “endlos” sein (ohne Start/Endpunkt und auch ohne Markierungen auf den Knöpfen), was eine Rotation von über 360 Grad ermöglicht, zusätzlich können sie motorisiert sein. Das ist sehr hilfreich, wenn zwischen Bildern oder Punkten in der Bearbeitungsabfolge hin und her geschaltet wird, weil die “physikalische” Stellung der Enkoder/Regler immer der auf dem Bildschirm angezeigten Position entspricht. Es gibt auf LED Ringe auf Enkodern, welche den gegenwärtigen Wert anzeigen.
🔗Endlose Enkoder; absolutes / relatives enkodieren
Neben deren physikalischen Eigenschaften sind diese Geräte sehr gut konfigurierbar, wie diese Daten übermitteln. Enkoder können ihre “absolute” Stellung als Wert im Bereich 0-127 übermitteln. darktable wird die gegenwärtige Position des Schiebers auf dem Bildschirm zurücksenden, welche ein LED-Ring (falls vorhanden) anzeigen würde oder ein motorisierter Regler würde reagieren (mit dem Knopf). Wenn der Enkoder endlos ist, kann er auch bei unterschiedlichen Geschwindigkeiten und höheren Auflösungen als den 128 Schritten eingesetzt werden, mit entweder mehreren Rotationen oder mit weniger als einer vollen Rotation, um den auf dem Bildschirm dargestellten Schieber zwischen den beiden Extremen.
Endlos-Enkoder ohne Ringlichter könnten relative Bewegungen senden, die bei schnellem Drehen beschleunigt werden können. Unterschiedliche Enkoding Modi können gebraucht werden, und es kann sein, dass das Gerät mit einer Software kommt, die es erlaubt diese Optionen zu konfigurieren. Es ist wichtig, dass alle Enkoder die gleiche Einstellung nutzen und auf demselben “Kanal” senden wie die Schalter (ideal der erste: 0 oder 1). Als Standard versucht darktable herauszufinden, indem es die ersten fünf Signale analysiert. Wenn du damit beginnst, solltest du einen Knopf langsam nach links/unten, so dass 5 identische Ein-Schritt-nach-unten Signale gesendet werden. Falls das misslingt, kann das Eingabesystem zurückgesetzt werden (mit Ctrl+Alt+Shift+i) für einen zweiten Versuch. Bei Erfolg wird eine Erfolgsmeldung auf der Mitte des Bildschirms angezeigt, die den entdeckten Enkoding Modus anzeigt. – 127 (“2s Complement”) und 63 (“Relative Offset”) sind häufig.
🔗Nutzung
Wenn dein Gerät erfolgreich konfiguriert und angeschlossen ist, solltest du eine Mitteilung ähnlich “G#–1 (8) not assigned” sehen, wenn du einen Knopf drückst (der erste ist ein musikalischer Notationscode für den “Ton”, der zweite eine numerische Repräsentation) oder “CC1,up not assigned” beim Einstellen eines Enkoders. Nun bist du bereit, Knöpfe und Enkoder an Aktionen zuzuweisen. Der einfachste Weg dazu für mehrere auf einmal ist es den Knopf visuelle Tastaturkürzel (links vom Knopf Präferenzen), du kommst jetzt in einen Modus visuelle Tastaturkürzel. In diesem Modus, wenn du mit der Maus über einen Knopf oder Schieber fährst und dabei eine Taste drückst oder einen Enkoder am MIDI Gerät startest, wird dieses Tastaturkürzel für dieses Widget zugewiesen. Du kannst es auch gleich testen (indem du im Mapping-Modus bleibst), die Maus in die Mitte des Bildschirms (damit du es nicht fälschlicherweise einem anderen Widget zuteilst) und dann die Aktion wiederholst. Mit einem Rechtsklick schaltest du den Mapping-Modus ab.
Vielleicht willst du auch Knöpfe zuteilen, um die Ctrl und Shift Tastenfunktionen zu duplizieren. Dafür brauchst du den vollständigen Tastaturkürzel-Dialog (Rechtsklick auf den Tastaturkürzel-Knopf oder du öffnest Voreinstellungen und gehe zum Register Tastaturkürzel). Mache in der obersten Liste einen Doppelklick auf “global/modifiers”. Nun drücke den MIDI Knopf, den du Shift zuordnen willst. Nun klicke nochmals auf “global/modifiers”, diesmal jedoch nach dem Zuordnen einen Knopf-Wechsel dem “Element” für das neu erstellte Tastaturkürzel von “Shift” zu “Ctrl” in der Liste unten. Du kannst jetzt dein MIDI-Gerät mit deiner Maus für die meisten Funktionen in darktable nutzen. Nach Ankreuzen “schalte Fallbacks zu” im Dialog der Tastaturkürzel und Ctrl gedrückt halten bei gleichzeitigem Drehen n einem Enkoder wird diesen um einen Faktor 10 verlangsamen, wenn du aber Shift gedrückt hältst wird diesen um den Faktor 10 beschleunigen.
Mehrere Geräte von Böhringer haben LEDs im Kreis rund um die Enkoder-Knöpfe. Diese nutzen unterschiedliche Muster, je nachdem wozu die Schieber oder Comboboxen zugewiesen sind: -Wenn der Schieber von -1 bis +1 geht, wird die mittlere LED bei null eingeschaltet sein. Beim Negativdrehen wird allmählich die linke Seite aufleuchten, beim Positivdrehen wird die rechte Seite aufleuchten. -Wenn der Schieber von 0-100% wirst du mehr LEDs aufleuchten sehen. Bei Rechtsdrehen bis bei 100% alle leuchten.
- Andere numerische Werte nutzen 1 oder 2 LEDs, um Zwischenwerte anzuzeigen.
- Dropdowns nutzen 1 LED für die Optionen, welche zur ersten Umdrehung passen, und 2 bei der zweiten Umdrehung.
🔗Fehlerbehebung und Konfiguration
Wenn du beim Drücken einer Taste oder beim Drehen eines Knopfes keinen “not assigend” Toast oben auf dem Bildschirm siehst, dann solltest du überprüfen, ob eine andere MIDI-Anwendung das Gerät findet. Unter Linux musst du Alsa installiert haben. Nach dem Einstecken des Gerätes sollte dmesg Linien wie folgende anzeigen:
usb 1-1: new full-speed USB device number 2 using xhci_hcd
...
mc: Linux media interface: v0.10
usbcore: registered new interface driver snd-usb-audio
darktable nutzt die einfache plattformübergreifende Ebene PortMidi, um das zugrundeliegende OS API (Alsa, Core Midi, WinMM). Wenn du selber kompilierst, stelle sicher, dass du diese Library einbezeogen hast.
Ein Starten von darktable mit den Debug-Parametern ,-d input
wird zusätzliche Informationen ausgeben. Versuche bis zu 10 MIDI-Geräte in der Reihenfolge zu öffnen, in der es sie findet. Auf der Befehlszeile sehen Sie möglicherweise Folgendes:
[midi_open_devices] opened midi device 'Arturia BeatStep' via 'MMSystem' as midi0
[midi_open_devices] opened midi device 'BCR2000' via 'MMSystem' as midi1
[midi_open_devices] opened midi device 'X-TOUCH MINI' via 'MMSystem' as midi2
Zwei Probleme können auftreten:
-
ein Gerät, das Sie nicht verwenden möchten, könnte trotzdem geöffnet werden (und möglicherweise unangemessenes Verhalten verursachen, wie das vorzeitige Starten einer Feuerwerksshow – siehe [dieses Dokument](http://webcache.googleusercontent.com/search?q=cache:6EcEOjfjiAkJ :gmbh.pyropak.com/docs/downloads/surefire-prologic-digital-controller_rev2010.pdf+&cd=1&hl=en&ct=clnk&gl=us)); oder
-
Geräte werden beim nächsten Start möglicherweise in einer anderen Reihenfolge angezeigt (z. B. weil sie an einem anderen USB-Anschluss angeschlossen sind). Da Konfigurationen nur mit der Gerätenummer gespeichert werden, würde eine Neubestellung dazu führen, dass ein falsches Layout aufgenommen wird.
Mit dem Konfigurationsparameter darktable-Voreinstellungen > Verschiedenes > Benutzeroberfläche > Midi Devices anordnen oder ausschließen kannst du fixieren, welche Geräte an einem bestimmten Ort geladen und welche übersprungen werden sollen. Um das Laden des BCR2000 im obigen Beispiel zu überspringen und die anderen beiden Geräte in den Slots Nummer 0 und 2 zu fixieren, könnten Sie diesen Konfigurationsparameter auf “BeatStep;dontuse;X-TOUCH;-BCR2000
” setzen. Dies würde den BeatStep als Gerät Midi0 belassen, Midi1 immer unbenutzt lassen und den BCR2000 überhaupt nicht laden, aber wenn irgendwelche anderen Geräte angeschlossen sind, würden sie als Midi3, Midi4 und so weiter erscheinen. Das Hinzufügen von “;-
” am Ende würde verhindern, dass weitere Geräte geladen werden.
Wenn du den Konfigurationsparameter als einfaches Minus-Zeichen spezifiziert “-
”, werden gar keine Geräte geladen.
Für Geräte mit relativem Enkoding, wie oben erwähnt, musst du die langsame-links-drehen Prozedur bei jedem Aufstarten ausführen, oder du fügst die gefundene Enkoding-Konfiguration an die Konfigurationszeichenkette. Zum Beispiel “Loupedeck:127
”.
Einige MIDI-Controller haben Tasten mit einem Licht darunter. Diese können verwendet werden, um Einstellungen umzuschalten und die aktuelle Position anzuzeigen, indem das Licht ein- oder ausgeschaltet wird. Damit das auch arbeitet, überprüft darktable regelmässig (ein paar Mal pro Sekunde), ob sich beispielsweise die Position einer Umschalttaste auf dem Bildschirm geändert hat, und sendet Nachrichten an alle verknüpften MIDI-Gerätetasten, um deren Licht ein- oder auszuschalten. Wenn jedoch versehentlich ein unbekanntes Gerät angeschlossen wurde, kann dies unerwünscht sein. Daher wartet darktable standardmässig, bis eine “Note”-Nachricht von einer MIDI-Taste empfangen wird, bevor es irgendwelche “Note”-Licht-Ein/Aus-Nachrichten für diese Taste zurück sendet. Es werden nicht mehr Tasten angesprochen, als auf dem Gerät vorhanden sind. Wenn Sie möchten, dass sofort alle Tastenleuchten verwendet werden (anstatt die höchste Note einmal für jede Sitzung drücken zu müssen), können Sie die Anzahl der Tasten in der Einstellung „MIDI-Geräte bestellen oder ausschliessen“ angeben, zum Beispiel „BeatStep:63 :16
".
🔗Unterstützte Geräte
The shortcut mapping system has been most extensively tested with the Behringer devices and contains custom code to deal with their specific features. All other devices are treated as “generic midi” and may or may not work (well). 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.
🔗Behringer X-touch Mini / Compact
These devices should be in Standard Mode (not MC). Layers A & B are somewhat supported, however, since the device does not send a notification when switching between layers, and since lights (both under buttons and the pattern used around the rotors) are set based on which layer darktable believes is active, everything will only be updated completely after you press or turn something in the “new” layer. Default settings are assumed; if any have been changed they can be restored using this X-Touch Editor
🔗Behringer BCR2000 / BCF2000
Diese Geräte sind hochgradig konfigurierbar, sodass es viele Einstellungen gibt, die eine Interaktion mit dem MIDI-Modul von darktable erschweren könnten. Das BC-Manager-Tool (verfügbar für Windows und MacOS) kann verwendet werden, um sie zu konfigurieren. Am einfachsten ist es, alle Encoder und Tasten auf ihre einfachsten Einstellungen zurückzusetzen, was (für den BCR2000) mit dieser Datei erfolgt. Sie können die Datei mit dem BC Manager oder (unter Linux) mit amidi an das Gerät senden. Es gibt auch eine globale Einstellung namens “Deadtime”, die bestimmt, wie lange der BCR nach dem Versenden von Updates ankommende Nachrichten ignoriert. Dies dient dazu, Rückkopplungsschleifen zu vermeiden, aber für darktable bedeutet es, dass die Einstellungen, die unmittelbar nach jeder Rotorbewegung zurückgesendet werden, blockiert werden. “Deadtime” muss also auf 0 gesetzt werden.
🔗Arturia Beatstep
Individuelle Rotoren können konfiguriert werden, indem absolute Werte (0-127) oder Änderungen (+/- 1,2,3,… in unterschiedlichen Enkodings). Die empfohlene Einstellung ist Relativ #1 für alle Knöpfe mit der Knopf-Beschleunigung auf Slow (Off) oder Medium. Dann füge den String BeatStep:63:16
in darktable Voreinstellungen > Verschiedenes > Benutzeroberfläche > MIDI Devices anordnen oder ausschliessen. Das kann mit dem Midi Kontrollcenter konfiguriert werden, das gibt es für Windows oder MacOS.
🔗Loupedeck / Loupedeck+
Füge den String Loupedeck:127
in “darktable Voreinstellungen > Verschiedenes > Benutzeroberfläche > MIDI Devices anordnen oder ausschliessen”.
@jenshannoschwalm hat ein Layout bereitgestellt, das in dem Register Tastaturkurzbefehle-Dialog importiert werden kann. Es kann inklusive Dokumentation hier gefunden werden: https://github.com/darktable-org/darktable/pull/12829#issuecomment-1320264833
🔗Korg nanoKONTROL2
Das Gerät sollte zuerst mit der Anwendung Korg Kontrol Editor so konfiguriert werden, dass es sich im CC-Modus befindet, und jede Taste sollte auf den Typ “Note” sowie “Momentary” eingestellt werden. Um die LEDs in den Tasten zu steuern, sollte der LED-Modus auf Extern eingestellt werden. Es ist wichtig zu beachten, dass die Track- und Marker-Tasten keine LEDs enthalten.
Es gibt hier ein Kontroll-Editor-Profil, das mit der Windows-Anwendung geladen werden kann, um alle diese Einstellungen direkt zu konfigurieren, damit sie mit darktable richtig funktionieren.