Ohne Programmierung geht das nicht.
Testen Sie zunächst, wie MIDI-Events erkannt werden. Gehen Sie zu einem Terminal und führen Sie aseqdump -l
aus um die MIDI-Ports aufzulisten; das gibt so etwas aus:
$ 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
Führen Sie es dann mit dem Clientnamen aus, um zu prüfen, ob Ereignisse eintreffen:
$ 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 ...
Zweitens benötigen Sie zum Simulieren von Tastenanschlägen xdotool
. Wenn Sie es noch nicht installiert haben, führen Sie sudo apt-get install xdotool
aus .Sie können type
verwenden um Text einzugeben, oder key
Sondertasten simulieren:
xdotool type Hello, World! xdotool key ctrl+p
Bitte beachten Sie, dass nicht alle Sondertasten korrekt von xdotool
behandelt werden .Und Strg+Alt+Entf wird vom Kernel sehr speziell gehandhabt und funktioniert wahrscheinlich nicht, wenn es simuliert wird; Versuchen Sie, sudo reset
auszuführen 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
).Jetzt sollte das Drücken von E-5 oder C-4 etwas bewirken.
Ändern oder ergänzen Sie Zeilen der Form "Note on x" ) command ;;
zu tun, was du willst.
Ich hatte ein ähnliches Problem, also habe ich etwas programmiert, das meinen Anforderungen entspricht.
https://gitlab.com/enetheru/midi2input
Läuft unter Linux und verwendet das X-Windows-System für Tastatur- und Mauseingabeereignisse.
Es verwendet lua für die Konfiguration und Zuordnung, kann jede Aktion als Ihr Benutzer ausführen. erkennt, welches Fenster aktiv ist, indem das X_CLASS-Attribut verwendet wird, sodass Sie verschiedene Zuordnungen für jede Anwendung vornehmen können, die gerade ausgeführt wird.
Lädt die Konfiguration automatisch neu, sodass Sie sie nicht ständig schließen und erneut öffnen müssen.
Ich habe eine einfache udev-Regel geschrieben, um die Midi-Verbindungen herzustellen, wenn ich meinen Controller anschließe.
Es gibt sogar ein Archlinux PKGBUILD für Archlinux, ich habe es nur nicht zum Aur hinzugefügt.
Die Idee war, alle Schmerzpunkte beim Erstellen von Mappings vom mittleren Controller zu allem, was ich will, zu beseitigen.
Es ist ein paar Jahre her, seit ich es erstellt habe, und ich benutze es jeden Tag, ich achte auf das Repo, aber es gab nur ein oder zwei Leute, die mir jemals eine E-Mail darüber geschrieben haben.