Dies ist nicht ohne Programmierung möglich.
Testen Sie zunächst, wie Sie MIDI-Ereignisse erkennen. Gehen Sie zu einem Terminal und führen Sie aseqdump -l
die Liste der MIDI-Ports aus. Dies gibt etwas wie das aus:
$ aseqdump -l Port Client-Name Port-Name 0: 0 Systemtimer 0: 1 Systemankündigung 14: 0 Midi durch Midi durch Port-0 24: 0 Xonar D2 Xonar D2 MIDI 32: 0 Yamaha DS-1E (YMF754) Yamaha DS-1E (YMF754) MIDI
Führen Sie dann den Clientnamen aus, um zu prüfen, ob Ereignisse eintreffen:
$ aseqdump -p "Xonar D2" Warten auf Daten Drücken Sie zum Beenden Strg + C. Quellereignis-Ch-Daten 24: 0 Note zu 0, Note 64, Geschwindigkeit 86 24: 0 Note zu 0, Note 48, Geschwindigkeit 80 24: 0 Hinweis aus 0, Hinweis 48 24: 0 Anmerkung zu 0, Anmerkung 68, Geschwindigkeit 84 24: 0 Note zu 0, Note 52, Geschwindigkeit 88 24: 0 Hinweis aus 0, Hinweis 64 24: 0 Hinweis aus 0, Hinweis 52 24: 0 Hinweis aus 0, Hinweis 68 ...
Zweitens, um die Tastenanschläge zu simulieren, müssen Sie dies tun xdotool
. Wenn Sie es noch nicht installiert haben, führen Sie es aus sudo apt-get install xdotool
. Sie können type
Text key
eingeben oder Sondertasten simulieren:
xdotool type Hallo, Welt! xdotool key Strg + p
Bitte beachten Sie, dass nicht alle Sondertasten korrekt von behandelt werden xdotool
. Und Strg + Alt + Entf wird vom Kernel sehr speziell behandelt und funktioniert wahrscheinlich nicht, wenn es simuliert wird. versuchen Sie, sudo reset
statt xdotool
.
Binden Sie schließlich alles mit einem Skript zusammen. Fügen Sie dies in eine Textdatei ein, zum Beispiel ~/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
Machen Sie es ausführbar ( chmod +x ~/bin/midi-to-keys
) und führen Sie es aus ( ~/bin/midi-to-keys
). Wenn Sie nun E-5 oder C-4 drücken, sollte dies Auswirkungen haben.
Ändern oder fügen Sie Zeilen des Formulars hinzu, um das "Note on x" ) command ;;
zu tun, was Sie möchten.