Переводить MIDI-ввод в нажатия клавиш компьютера в Linux?
У меня есть MIDI-контроллер (Launchkey Mini), который я больше не использую для производства музыки, но я хотел бы использовать на нем кнопки барабанной панели или клавиши пианино для выполнения комбинаций клавиатуры компьютера, таких как Ctrl + Alt + Delete, с помощью одного нажатия.
Всякий раз, когда я пытаюсь исследовать этот вопрос, я либо указываю на MIDI-переводчик Bome, который стоит денег, а не на Linux, на ужасно устаревший плагин / приложение, либо на какую-то случайную библиотеку для его самостоятельного кодирования, которую я не имею ни малейшего понятия. как делать, так как у меня практически нет навыков программирования вещей, связанных со звуком.
Я узнал что-то под названием VMPK, но после прочтения документации кажется, что он преобразует нажатия клавиш компьютера только в MIDI-сигналы, а не наоборот.
Есть ли способ, которым я могу это сделать? Я на Xubuntu 16.04.
2 ответа
Это не может быть сделано без некоторого программирования.
Сначала проверьте, как обнаружить MIDI-события. Перейти к терминалу и запустить aseqdump -l
перечислить MIDI-порты; это выводит что-то вроде этого:
$ aseqdump -l Порт Имя клиента Имя порта 0: 0 Системный таймер Системный анонс 0:1 14:0 Миди Через Миди Через Порт-0 24:0 Xonar D2 Xonar D2 MIDI 32:0 Yamaha DS-1E (YMF754) Yamaha DS-1E (YMF754) MIDI
Затем запустите его с именем клиента, чтобы проверить, приходят ли события:
$ aseqdump -p "Xonar D2" Ожидание данных. Нажмите Ctrl+C, чтобы закончить. Источник Событие Ch Данные 24: 0 Нота 0, нота 64, скорость 86 24:0 Нота 0, нота 48, скорость 80 24:0 Нота 0, нота 48 24:0 Нота 0, нота 68, скорость 84 24:0 нота 0, нота 52, скорость 88 24:0 нота 0, нота 64 24:0 нота 0, нота 52 24:0 нота 0, нота 68 ...
Во-вторых, чтобы имитировать нажатия клавиш, вам нужно xdotool
, Если он еще не установлен, запустите sudo apt-get install xdotool
, Ты можешь использовать type
набрать текст или key
для имитации специальных клавиш:
Тип xdotool Привет, Мир! ключ xdotool 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 ;;
делать что хочешь.
У меня была похожая ситуация, поэтому я сделал небольшую программу, которая делает это для меня https://gitlab.com/enetheru/midi2input