Prise en charge des périphériques MIDI

🔗Introduction

Le MIDI est un protocole de communication utilisé par de nombreux instruments de musique électroniques (“pianos”), des équipements de studio audio numérique (“surfaces de contrôle”) et même des “claviers de retouche photo” dédiés comme le Loupedeck/Loupedeck+ (mais pas leurs produits ultérieurs). Ces appareils comportent généralement des séries de touches/boutons et parfois des encodeurs (boutons/rotors) et des faders (curseurs). Les boutons sont parfois lumineux, ce qui les rend idéaux pour faire basculer des fonctions dans la darktable, car les lumières peuvent refléter l’état actuel (activé/désactivé). Les encodeurs et les faders sont idéaux pour les curseurs à l’écran dans les modules de traitement. Ils peuvent être “sans fin” (sans point de départ/fin et sans marquage sur le bouton), permettant une rotation de plus de 360 degrés, et ils peuvent être motorisés. Cela est utile pour passer d’une image à l’autre ou d’un point à l’autre de l’historique d’édition, car la position “physique” des encodeurs/faders correspond toujours à la position à l’écran. Vous pouvez également trouver un anneau de led autour d’un encodeur qui indique sa valeur actuelle.

🔗Encodeurs sans fin ; encodage absolu / relatif

Outre leurs caractéristiques physiques, ces dispositifs sont souvent hautement configurables en ce qui concerne la manière dont ils envoient les données. Les encodeurs peuvent envoyer leur position “absolue” lorsqu’ils sont tournés, sous la forme d’une valeur comprise entre 0 et 127. Darktable renverra la position actuelle du curseur à l’écran, qu’un anneau de led affichera (s’il est présent) ou qu’un curseur motorisé répondra (en déplaçant le bouton). Si l’encodeur est sans fin, il peut également être utilisé à différentes vitesses et à une résolution plus élevée que les 128 pas, avec de nombreuses rotations ou moins d’une rotation complète nécessaire pour déplacer le curseur à l’écran entre les extrêmes.

Les encodeurs sans fin sans anneau lumineux peuvent envoyer des mouvements relatifs qui peuvent être accélérés lors d’un virage rapide. Différents modes de codage peuvent être utilisés et l’appareil peut être fourni avec un logiciel permettant de configurer ces options. Il est important que tous les encodeurs utilisent les mêmes paramètres et envoient sur le même " canal " que les touches (idéalement le premier : 0 ou 1). Par défaut, darktable essaie de déterminer le canal et l’encodage utilisés en écoutant les cinq premiers messages. Après avoir démarré une session, vous devez tourner lentement un bouton vers la gauche ou vers le bas de manière à ce que 5 messages identiques soient envoyés. En cas d’échec, le système d’entrée peut être réinitialisé (en appuyant sur Ctrl+Alt+Maj+i) pour une nouvelle tentative. En cas de succès, un message de bienvenue sera affiché au milieu de l’écran, indiquant le mode d’encodage découvert – 127 (“2s Complement”) et 63 (“Relative Offset”) sont courants.

🔗Utilisation

Si votre appareil a été configuré et connecté avec succès, vous devriez voir apparaître des messages tels que “G#–1 (8) non assigné” lorsque vous appuyez sur un bouton (le premier est un code de notation musicale pour la “tonalité”, le second une représentation numérique) ou “CC1, n’est pas assigné” lorsque vous réglez un encodeur. Vous êtes maintenant prêt à assigner des boutons et des encodeurs à des actions. La manière la plus simple de le faire pour plusieurs d’entre eux en une seule fois est d’appuyer sur le bouton définir les raccourcis (à gauche du bouton des préférences) pour entrer dans le mode de mappage visuel de raccourci. Dans ce mode, lorsque vous passez la souris sur un bouton ou un curseur, si vous appuyez sur une touche ou tournez un encodeur sur le périphérique MIDI, le raccourci est attribué à ce widget. Vous pouvez immédiatement le tester (tout en restant en mode de correspondance) en déplaçant la souris vers le milieu de l’écran (afin de ne pas l’affecter accidentellement à un autre widget), puis en répétant l’action. Cliquez avec le bouton droit de la souris pour désactiver le mode de mappage.

Vous pouvez également assigner des boutons pour dupliquer les fonctions des touches Ctrl et Maj. Pour cela, vous avez besoin de la boîte de dialogue complète des raccourcis (cliquez avec le bouton droit de la souris sur le bouton des raccourcis ou ouvrez Préférences et allez dans l’onglet Raccourcis). Dans la liste du haut (“action”), double-cliquez sur “global/modifiers”. Appuyez maintenant sur le bouton MIDI que vous souhaitez assigner à Shift. Double-cliquez à nouveau sur “global/modifiers”, mais cette fois-ci, après avoir assigné un bouton, changez l’élément du raccourci nouvellement créé dans la liste du bas de “shift” à “ctrl”. Vous pouvez maintenant utiliser votre périphérique MIDI avec votre souris pour accéder à la plupart des fonctionnalités de darktable. Après avoir coché “enable fallbacks” dans la boîte de dialogue des raccourcis, maintenir Ctrl tout en tournant un encodeur le ralentira d’un facteur 10, tandis que maintenir Shift l’accélérera.

Plusieurs appareils produits par Behringer sont dotés de diodes électroluminescentes en cercle autour de leurs boutons encodeurs. Celles-ci utilisent différents motifs en fonction du curseur ou de la boîte combinée à laquelle elles sont assignées :

  • Si le curseur va de -1 à +1, seule la LED du milieu sera allumée à zéro. Un déplacement négatif allume progressivement le côté gauche, un déplacement positif allume le côté droit.
  • Si le curseur va de 0 à 100 %, vous verrez de plus en plus de LED s’allumer lorsque vous vous déplacez vers la droite, jusqu’à ce qu’elles soient toutes allumées à 100 %.
  • Les autres valeurs numériques utilisent 1 ou 2 LED pour indiquer les valeurs intermédiaires.
  • Les listes déroulantes utilisent 1 diode pour les options qui s’inscrivent dans le premier tour du cadran et 2 pour le deuxième tour.

🔗Dépannage et configuration

Si vous ne voyez pas de message " non assigné " en haut de votre écran lorsque vous appuyez sur des touches ou tournez des boutons, vous devez vérifier si d’autres applications MIDI peuvent voir l’appareil. Sous Linux, Alsa doit être installé. Après avoir branché le périphérique, dmesg devrait afficher des lignes comme celles-ci :

usb 1-1 : nouveau périphérique USB pleine vitesse numéro 2 utilisant xhci_hcd
...
mc : Interface média Linux : v0.10
usbcore : enregistrement d'un nouveau pilote d'interface snd-usb-audio

Darktable utilise la simple couche multiplateforme PortMidi pour accéder à l’API du système d’exploitation sous-jacent (Alsa, Core Midi, WinMM). Si vous compilez vous-même, assurez-vous d’avoir inclus cette bibliothèque.

Démarrer darktable avec les paramètres de débogage -d input donnera des informations supplémentaires. Il devrait essayer d’ouvrir jusqu’à 10 dispositifs MIDI dans l’ordre où il les trouve. Sur la ligne de commande, vous pourriez voir quelque chose comme ceci :

[midi_open_devices] a ouvert le périphérique midi 'Arturia BeatStep' via 'MMSystem' en tant que midi0
[midi_open_devices] a ouvert le périphérique midi 'BCR2000' via 'MMSystem' en tant que midi1
[midi_open_devices] a ouvert le périphérique midi 'X-TOUCH MINI' via 'MMSystem' en tant que midi2

Deux problèmes peuvent survenir :

  • un périphérique que vous ne souhaitez pas utiliser peut quand même être ouvert(et potentiellement provoquer un comportement inapproprié, comme le démarrage prématuré d’un feu d’artifice (voir ce document), ou

  • les périphériques peuvent apparaître dans un ordre différent au prochain démarrage (par exemple parce qu’ils sont branchés sur un port USB différent). Étant donné que les configurations sont stockées uniquement avec le numéro de périphérique, une réorganisation entraînerait la détection d’une disposition incorrecte.

Vous pouvez déterminer quels périphériques doivent être chargés à un endroit spécifique et lesquels doivent être ignorés en utilisant le paramètre de configuration Préférences > Divers > Interface > Trier ou exclure les périphériques MIDI. Pour ne pas charger le BCR2000 dans l’exemple ci-dessus et pour fixer les deux autres appareils dans les emplacements numéro 0 et 2, vous pourriez mettre ce paramètre de configuration à “BeatStep ;dontuse ;X-TOUCH ;-BCR2000”. Cela laisserait le BeatStep en tant que dispositif midi0, laisserait toujours midi1 inutilisé et ne chargerait pas du tout le BCR2000, mais si d’autres dispositifs sont connectés, ils apparaîtraient en tant que midi3, midi4 et ainsi de suite. L’ajout de “ ;-” à la fin empêcherait le chargement d’autres appareils.

Si vous spécifiez le paramètre de configuration sous la forme d’un simple signe moins “-”, aucun dispositif ne sera chargé.

Pour les appareils qui utilisent un encodage relatif comme mentionné ci-dessus, vous devez effectuer la procédure de rotation lente vers la gauche à chaque démarrage, ou ajouter l’encodage trouvé à la chaîne de configuration. Par exemple Loupedeck :127.

Certains contrôleurs MIDI ont des touches avec une lumière au-dessous d’eux. Ceux-ci peuvent être utilisés pour basculer les réglages et afficher la position actuelle en allumant ou en éteignant la lumière. Dans ce cas, darktable vérifie périodiquement (quelques fois par seconde) si, par exemple, la position d’un bouton à bascule à l’écran a été modifiée, et envoie des messages à tous les boutons d’appareils MIDI liés pour allumer ou éteindre leur lumière. Mais si un appareil inconnu a été connecté par inadvertance, cela pourrait être indésirable. Ainsi, par défaut, darktable attend qu’un message “note” soit reçu d’un bouton midi avant de renvoyer tout message d’activation/désactivation de la lumière “note” pour ce bouton. De cette façon, pas plus de boutons ne sont adressés qu’il n’en existe sur l’appareil. Si vous souhaitez que tous les voyants des boutons soient immédiatement utilisés (plutôt que d’avoir à appuyer sur la note la plus haute une fois pour chaque session), vous pouvez spécifier le nombre de boutons dans la préférence Trier ou exclure les périphériques midi, par exemple, BeatStep :63 :16.

🔗Dispositifs pris en charge

Le système de mappage des raccourcis a été testé de manière plus approfondie avec les appareils Behringer et contient un code personnalisé pour gérer leurs caractéristiques spécifiques. Tous les autres appareils sont traités comme des appareils “MIDI génériques” et peuvent ou non (bien) fonctionner. Si vous réussissez à faire fonctionner un appareil MIDI qui n’a pas été mentionné ci-dessous, nous vous serions très reconnaissants de nous faire part de vos commentaires afin d’aider les autres, si des étapes spéciales sont nécessaires. Vous pouvez le faire soit en soumettant un pull request de documentation pour modifier cette page, soit en filing an issue contenant les informations nécessaires.

🔗Behringer X-touch Mini / Compact

Ces appareils doivent être en mode standard (pas MC). Les couches A et B sont quelque peu supportées, cependant, puisque l’appareil n’envoie pas de notification lors du passage d’une couche à l’autre, et puisque les lumières (à la fois sous les boutons et le motif utilisé autour des rotors) sont réglées en fonction de la couche que darktable croit active, tout ne sera complètement mis à jour qu’après avoir appuyé ou tourné quelque chose dans la “nouvelle” couche. Les paramètres par défaut sont pris en compte ; s’ils ont été modifiés, ils peuvent être rétablis à l’aide de ce X-Touch Editor.

🔗Behringer BCR2000 / BCF2000

Ces machines sont hautement configurables, il existe donc de nombreux paramètres qui pourraient compliquer l’interaction avec le module MIDI de darktable. L’outil BC Manager (disponible pour Windows et MacOS) peut être utilisé pour les configurer. La chose la plus simple à faire est de réinitialiser tous les encodeurs et boutons à leurs paramètres les plus simples, ce qui peut être fait (pour le BCR2000) en utilisant ce fichier. Vous pouvez l’envoyer à la machine avec BC Manager ou (sous Linux) avec amidi. Il existe également un paramètre global appelé “Deadtime” qui détermine combien de temps le BCR ignore les messages arrivant après l’envoi des mises à jour. C’est pour éviter les boucles de rétroaction, mais pour darktable, cela signifie qu’il bloque les ajustements renvoyés immédiatement après chaque mouvement du rotor. Le temps mort doit donc être défini sur 0.

🔗Arturia Beatstep

Les rotors individuels peuvent être configurés pour envoyer des valeurs absolues (0-127) ou des changements (+/- 1, 2, 3,… dans différents codages). Le réglage recommandé est Relative #1 pour tous les boutons avec l’accélération des boutons réglée sur Slow (Off) ou Medium. Ensuite, mettez la chaîne BeatStep :63 :16 dans Préférences > Divers > Interface > Trier ou exclure les périphériques MIDI. Ceci peut être configuré avec Midi Control Center, disponible pour Windows ou MacOS.

🔗Loupedeck / Loupedeck+

Mettez la chaîne Loupedeck :127 dans Préférences > Divers > Interface > Trier ou exclure les périphériques MIDI.

@jenshannoschwalm a fourni une mise en page qui peut être importée dans la boîte de dialogue/onglet Raccourcis. Elle est disponible ici avec la documentation.

🔗Korg nanoKONTROL2

L’appareil doit d’abord être configuré à l’aide de l’application Korg Kontrol Editor pour être en mode CC et chaque bouton doit être défini sur le type Note et le comportement du bouton sur Momentané. Pour contrôler les lumières des boutons, le mode LED doit être réglé sur Externe. Il est important de noter que les boutons Track et Marker n’ont pas de leds.

Il existe un profil Kontrol Editor disponible ici qui peut être chargé à l’aide de l’application Windows pour configurer directement tous ces paramètres pour qu’ils fonctionnent correctement avec darktable.

translations