Переводить 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

Другие вопросы по тегам