5

У меня есть MIDI-контроллер (Launchkey Mini), который я больше не использую для производства музыки, но я хотел бы использовать на нем кнопки барабанной панели или клавиши пианино для выполнения комбинаций клавиатуры компьютера, таких как Ctrl + Alt + Delete, с помощью одного нажатия.

Всякий раз, когда я пытаюсь исследовать этот вопрос, я либо указываю на MIDI-переводчик Bome, который стоит денег, а не на Linux, на ужасно устаревший плагин / приложение или какую-то случайную библиотеку для его самостоятельного кодирования, которую я не имею ни малейшего понятия. как делать, так как у меня практически нет навыков программирования вещей, связанных со звуком.

Я узнал что-то под названием VMPK, но после прочтения документации кажется, что он преобразует нажатия клавиш компьютера только в MIDI-сигналы, а не наоборот.

Есть ли способ, которым я могу сделать это? Я на Xubuntu 16.04.

2 ответа2

8

Это не может быть сделано без некоторого программирования.

Сначала проверьте, как обнаружить MIDI-события. Перейдите к терминалу и выполните aseqdump -l чтобы вывести список портов MIDI; это выводит что-то вроде этого:

$ 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

Затем запустите его с именем клиента, чтобы проверить, приходят ли события:

$ 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
...

Во-вторых, для симуляции нажатий клавиш вам нужен xdotool . Если он еще не установлен, запустите sudo apt-get install xdotool . Вы можете использовать type для ввода текста или key для имитации специальных клавиш:

xdotool type Hello, World!
xdotool key ctrl+p

Обратите внимание, что не все специальные ключи обрабатываются правильно xdotool . А Ctrl+Alt+Del обрабатывается ядром очень специально и, вероятно, не работает при моделировании; попробуйте запустить sudo reset вместо xdotool .

Наконец, свяжите все вместе с помощью сценария. Поместите это в текстовый файл, например, ~/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

Сделайте его исполняемым (chmod +x ~/bin/midi-to-keys) и запустите его (~/bin/midi-to-keys). Теперь нажатие E-5 или C-4 должно иметь некоторый эффект.

Изменить или добавить строки вида "Note on x" ) command ;; делать что хочешь.

7

У меня была похожая ситуация, поэтому я сделал небольшую программу, которая делает это для меня https://gitlab.com/enetheru/midi2input

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .