suporte a dispositivo midi
🔗introdução
MIDI é um protocolo de comunicação usado por muitos instrumentos musicais eletrônicos (“pianos”), equipamentos de estúdio de áudio digital (“superfícies de controle”) e até mesmo “teclados de edição de fotos” dedicados como o Loupedeck/Loupedeck+ (mas não seus produtos posteriores). Esses dispositivos geralmente apresentam conjuntos de teclas/botões e, às vezes, codificadores (botões giratórios/rotores) e faders (controles deslizantes). Os botões às vezes apresentam luzes, o que os torna ideais para alternar recursos no darktable, porque as luzes podem refletir o status atual (ligado/desligado). Encoders e faders são ideais para uso com controles deslizantes na tela em módulos de processamento. Podem ser “infinitos” (sem ponto de início/fim e sem marcações no botão) permitindo rotação superior a 360 graus, podendo ser motorizados. Isto é útil ao alternar entre imagens ou pontos no histórico de edição, uma vez que a posição “física” dos codificadores/faders sempre corresponde à posição na tela. Você também pode encontrar um anel de LEDs ao redor de um codificador que indica seu valor atual.
🔗codificadores infinitos; codificação absoluta/relativa
Além de seus recursos físicos, esses dispositivos costumam ser altamente configuráveis na forma como enviam dados. Os codificadores podem enviar sua posição “absoluta” quando são girados, como um valor no intervalo de 0 a 127. O darktable enviará de volta a posição atual do controle deslizante na tela, que um anel de LEDs mostraria (se presente) ou um fader motorizado responderia (movendo o botão). Se o codificador for infinito, ele também poderá ser usado em velocidades diferentes e resolução mais alta do que apenas os 128 passos, com muitas rotações ou menos de uma rotação completa necessária para mover o controle deslizante na tela entre os extremos.
Encoders infinitos sem anéis luminosos podem enviar movimentos relativos que podem ser acelerados ao girar rapidamente. Diferentes modos de codificação podem ser usados e o dispositivo pode vir com software para configurar essas opções. É importante que todos os codificadores utilizem as mesmas configurações e enviem no mesmo “canal” das chaves (idealmente o primeiro: 0 ou 1). Por padrão, o darktable tenta descobrir qual canal e codificação são usados ouvindo as primeiras cinco mensagens. Depois de iniciar uma sessão, você deve girar lentamente um botão para a esquerda/baixo para que 5 mensagens idênticas de um passo abaixo sejam enviadas. Se isso falhar, o sistema de entrada pode ser redefinido (pressionando Ctrl+Alt+Shift+i) para outra tentativa. Em caso de sucesso, uma mensagem brinde será mostrada no meio da tela exibindo o modo de codificação descoberto - 127 (“Complemento de 2s”) e 63 (“Deslocamento relativo”) são comuns.
🔗uso
Se o seu dispositivo tiver sido configurado e conectado com sucesso, você deverá ver mensagens como “G#–1 (8) não atribuído” ao pressionar um botão (o primeiro é um código de notação musical para o “tom”, o segundo é uma representação numérica ) ou “CC1,up não atribuído” ao ajustar um encoder. Agora você está pronto para atribuir botões e codificadores às ações. A maneira mais fácil de fazer isso para vários deles de uma só vez é pressionar o botão mapeamento de atalho visual (à esquerda do botão de preferências ) para entrar no modo de mapeamento visual de atalho. Neste modo, quando você passa o mouse sobre um botão ou controle deslizante, se você pressionar uma tecla ou girar um codificador no dispositivo MIDI, ele será atribuído como um atalho para esse widget. Você pode testá-lo imediatamente (enquanto permanece no modo de mapeamento) movendo o mouse para o meio da tela (para não atribuí-lo acidentalmente a um widget diferente) e repetindo a ação. Clique com o botão direito para desligar o modo de mapeamento.
Você também pode atribuir botões para duplicar as funções das teclas Ctrl e Shift. Para isso, você precisa da caixa de diálogo completa de atalhos (clique com o botão direito no botão de atalhos ou abra preferências e vá para [atalhos](../preferences-settings/shortcuts .md) guia). Na lista superior (“ação”), clique duas vezes em “global/modificadores”. Agora pressione o botão MIDI que deseja atribuir ao Shift. Clique duas vezes em “global/modificadores” novamente, mas desta vez após atribuir um botão, altere o elemento do atalho recém-criado na lista inferior de “shift” para “ctrl”. Agora você pode usar seu dispositivo MIDI junto com seu mouse para acessar a maioria das funcionalidades do darktable. Depois de marcar “habilitar substitutos” na caixa de diálogo de atalhos, segurar Ctrl enquanto gira um codificador irá desacelerá-lo por um fator 10, enquanto segurar Shift acelera.
Vários dispositivos produzidos pela Behringer possuem LEDs em círculo ao redor dos botões do codificador. Eles usam padrões diferentes dependendo do controle deslizante ou caixa de combinação ao qual estão atribuídos:
- Se o controle deslizante for de -1 a +1, apenas o LED do meio acenderá em zero. Mover o negativo iluminará gradualmente o lado esquerdo, mover o positivo iluminará o lado direito.
- Se o controle deslizante for de 0 a 100%, você verá mais LEDs acendendo ao mover para a direita, até que todos estejam acesos em 100%.
- Outros valores numéricos utilizarão 1 ou 2 LEDs para indicar valores intermediários.
- Os menus suspensos usarão 1 LED para as opções que cabem na primeira volta do dial e 2 na segunda volta.
🔗solução de problemas e configuração
Se você não vir nenhum comando “não atribuído” na parte superior da tela ao pressionar teclas ou girar botões, teste se algum outro aplicativo MIDI pode ver o dispositivo. No Linux você precisará ter o Alsa instalado. Após conectar o dispositivo, o dmesg deverá mostrar linhas como estas:
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
O darktable usa a camada simples de plataforma PortMidi para acessar a API do sistema operacional subjacente (Alsa, Core Midi, WinMM). Se você estiver compilando automaticamente, certifique-se de incluir esta biblioteca.
Iniciar o darktable com os parâmetros de depuração -d input
fornecerá informações adicionais. Ele deve tentar abrir até 10 dispositivos MIDI na ordem em que os encontra. Na linha de comando você poderá ver algo assim:
[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
Dois problemas podem surgir:
-
um dispositivo que você não deseja usar pode ser aberto de qualquer maneira (e potencialmente causar um comportamento inadequado, como iniciar um show de fogos de artifício prematuramente – consulte este documento); ou
-
os dispositivos podem aparecer em uma ordem diferente na próxima inicialização (por exemplo, porque estão conectados a uma porta USB diferente). Como as configurações são armazenadas apenas com o número do dispositivo, a reordenação faria com que um layout incorreto fosse selecionado.
Você pode corrigir quais dispositivos carregar em um local específico e quais ignorar usando o parâmetro de configuração preferências > miscelânea > interface > carregar ou excluir dispositivos midi. Para pular o carregamento do BCR2000 no exemplo acima e fixar os outros dois dispositivos nos slots de número 0 e 2, você pode definir este parâmetro de configuração como “BeatStep;dontuse;X-TOUCH;-BCR2000
”. Isso deixaria o BeatStep como dispositivo midi0, sempre deixaria midi1 sem uso e não carregaria o BCR2000, mas se outros dispositivos estiverem conectados, eles aparecerão como midi3, midi4 e assim por diante. Adicionar “;-
” no final impediria o carregamento de outros dispositivos.
Se você apenas especificar o parâmetro de configuração como um único sinal de menos “-
”, nenhum dispositivo será carregado.
Para dispositivos que usam codificação relativa conforme mencionado acima, você teria que executar o procedimento de virar lentamente para a esquerda em cada inicialização ou adicionar a codificação encontrada à string de configuração. Por exemplo “Loupedeck:127
”.
Alguns controladores MIDI possuem teclas com uma luz abaixo delas. Elas podem ser usadas para alternar as configurações e mostrar a posição atual acendendo ou apagando a luz. Para isso funcionar, o darktable verifica periodicamente (algumas vezes por segundo) se, digamos, a posição de um botão de alternância na tela foi alterada e envia mensagens para qualquer botão de dispositivo MIDI vinculado para ligar ou desligar a luz. Mas se um dispositivo desconhecido foi conectado involuntariamente, isso pode ser indesejável. Portanto, por padrão, o darktable espera até que uma mensagem de “nota” seja recebida de um botão MIDI antes de enviar qualquer mensagem de ativação/desativação da luz de “nota” de volta para esse botão (e qualquer outro de número inferior). Dessa forma, não são endereçados mais botões do que os existentes no dispositivo. Se você quiser que todas as luzes dos botões sejam usadas imediatamente (em vez de pressionar a nota mais alta uma vez para cada sessão), você pode especificar o número de botões na preferência “carregar ou excluir dispositivos MIDI”, por exemplo, “BeatStep:63 :16
”.
🔗dispositivos suportados
O sistema de mapeamento de atalhos foi testado extensivamente com os dispositivos Behringer e contém código personalizado para lidar com seus recursos específicos. Todos os outros dispositivos são tratados como “midi genérico” e podem ou não funcionar (bem). Se você conseguir colocar um dispositivo MIDI em funcionamento que não tenha sido mencionado abaixo, seria muito apreciado se você fornecesse feedback para ajudar outras pessoas, se forem necessárias etapas especiais. Você pode fazer isso enviando um pull request de documentação para alterar esta página ou registrar um problema contendo as informações necessárias.
🔗Behringer X-touch Mini / Compacto
Esses dispositivos devem estar no modo padrão (não no modo MC). As camadas A e B são de certa forma suportadas, no entanto, já que o dispositivo não envia uma notificação ao alternar entre as camadas, e como as luzes (tanto sob os botões quanto no padrão usado ao redor dos rotores) são definidas com base em qual camada o darktable acredita estar ativa, tudo só será atualizado completamente depois que você pressionar ou virar algo na “nova” camada. As configurações padrão são assumidas; se algum tiver sido alterado, ele poderá ser restaurado usando este Editor X-Touch
🔗Behringer BCR2000 / BCF2000
Essas máquinas são altamente configuráveis, portanto, há muitas configurações que podem complicar a interação com o módulo MIDI do darktable. A ferramenta de gerenciamento do BC (disponível para Windows e MacOS) pode ser usada para configurá-los. A coisa mais fácil a fazer é redefinir todos os codificadores e botões para suas configurações mais simples, o que pode ser feito (para o BCR2000) usando este arquivo. Você pode enviá-lo para a máquina com o Gerenciador do BC ou (no Linux) com o amidi. Há também uma configuração global chamada “Deadtime” que determina por quanto tempo o BCR ignora as mensagens que chegam depois de enviar atualizações. Isso evita loops de feedback, mas para o darktable significa que bloqueia os ajustes enviados de volta imediatamente após cada movimento do rotor. Portanto, o Deadtime precisa ser definido como 0.
🔗Arturia Beatstep
Rotores individuais podem ser configurados para enviar valores absolutos (0-127) ou alterações (+/- 1,2,3,… em diferentes codificações). A configuração recomendada é Relative #1 para todos os botões com Knob Acceleration definido como Slow (Off) ou Medium. Em seguida, coloque a string BeatStep:63:16
em preferências > diversos > interface > ordenar ou excluir dispositivos midi. Isso pode ser configurado com o Centro de Controle Midi, disponível para Windows ou MacOS.
🔗Loupedeck / Loupedeck+
Coloque a string Loupedeck:127
em “preferências > diversos > interface > ordenar ou excluir dispositivos midi”.
@jenshannoschwalm forneceu um layout que pode ser importado na caixa de diálogo/aba de atalhos. Ele pode ser encontrado, com documentação, aqui https://github.com/darktable-org/darktable/pull/12829#issuecomment -1320264833
🔗Korg nanoKONTROL2
O dispositivo deve ser configurado primeiro usando o aplicativo Korg Kontrol Editor para estar no modo CC e cada botão deve ser definido para o tipo de nota e comportamento de botão Momentâneo. Para controlar as luzes nos botões, o modo LED deve ser definido como Externo. É importante notar que os botões Track e Marker não possuem leds.
Há um perfil do Kontrol Editor disponível aqui, que pode ser carregado usando o aplicativo Windows para configurar diretamente todas essas configurações para funcionar corretamente com o darktable.