Traduzindo a entrada MIDI nas teclas do computador no Linux?

4

Eu tenho um controlador MIDI (Launchkey Mini) que não uso mais para produção musical, mas gostaria de usar os botões de bloco de percussão ou teclas de piano para realizar combinações de teclado de computador, como Ctrl + Alt + Delete, com um único toque.

Sempre que tento pesquisar essa questão, ou sou apontado para o MIDI Translator do Bome, que custa dinheiro e não está no Linux, um plug-in / aplicativo horrivelmente desatualizado ou alguma biblioteca aleatória para codificá-lo eu mesmo, que eu não tenho idéia de como fazer, já que praticamente não tenho habilidade em programar coisas relacionadas ao áudio.

Eu descobri a existência de algo chamado VMPK, mas depois de ler sua documentação, parece que apenas converte as teclas do computador em sinais MIDI, e não o contrário.

Existe alguma maneira de fazer isso? Eu estou no Xubuntu 16.04.

    
por RobotUnderscore 21.01.2017 / 23:15

2 respostas

7

Isso não pode ser feito sem alguma programação.

Primeiro, teste como detectar eventos MIDI. Vá para um terminal e execute aseqdump -l para listar as portas MIDI; Isso gera algo parecido com isto:

$ aseqdump -l
 Port    Client name                      Port name
  0:0    System                           Timer
  0:1    System                           Announce
 14:0    Midi Through                     Midi Through Port-0
 24:0    Xonar D2                         Xonar D2 MIDI
 32:0    Yamaha DS-1E (YMF754)            Yamaha DS-1E (YMF754) MIDI

Em seguida, execute-o com o nome do cliente para verificar se os eventos chegam:

$ aseqdump -p "Xonar D2"
Waiting for data. Press Ctrl+C to end.
Source  Event                  Ch  Data
 24:0   Note on                 0, note 64, velocity 86
 24:0   Note on                 0, note 48, velocity 80
 24:0   Note off                0, note 48
 24:0   Note on                 0, note 68, velocity 84
 24:0   Note on                 0, note 52, velocity 88
 24:0   Note off                0, note 64
 24:0   Note off                0, note 52
 24:0   Note off                0, note 68
...

Em segundo lugar, para simular traços de teclas, você precisa de xdotool . Se você ainda não tiver instalado, execute sudo apt-get install xdotool . Você pode usar type para digitar texto ou key para simular chaves especiais:

xdotool type Hello, World!
xdotool key ctrl+p

Por favor, note que nem todas as chaves especiais são tratadas corretamente por xdotool . E Ctrl + Alt + Del é tratado muito especialmente pelo kernel e provavelmente não funciona quando simulado; tente executar sudo reset em vez de xdotool .

Finalmente, amarre tudo junto com um script. Coloque isso em um arquivo de texto, por exemplo, ~/bin/midi-to-keys :

#!/bin/bash
aseqdump -p "Xonar D2" | \
while IFS=" ," read src ev1 ev2 ch label1 data1 label2 data2 rest; do
    case "$ev1 $ev2 $data1" in
        "Note on 64" ) xdotool type hello ;;
        "Note on 48" ) xdotool key ctrl+j ;;
    esac
done

Torne-o executável ( chmod +x ~/bin/midi-to-keys ) e execute-o ( ~/bin/midi-to-keys ). Agora, pressionar E-5 ou C-4 deve ter algum efeito.

Altere ou adicione linhas do formulário "Note on x" ) command ;; para fazer o que você quiser.

    
por 22.01.2017 / 10:30
7

Eu tive uma situação semelhante, então eu fiz um pequeno programa que faz isso para mim link

    
por 15.09.2017 / 09:32