Questo non può essere fatto senza un po' di programmazione.
Innanzitutto, prova come rilevare gli eventi MIDI. Vai a un terminale ed esegui aseqdump -l
per elencare le porte MIDI; this restituisce qualcosa di simile a questo:
$ 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
Quindi eseguilo con il nome del client per verificare se gli eventi arrivano:
$ 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 ...
In secondo luogo, per simulare i tasti premuti, è necessario xdotool
. Se non l'hai ancora installato, esegui sudo apt-get install xdotool
.Puoi usare type
per digitare il testo o key
per simulare tasti speciali:
xdotool type Hello, World! xdotool key ctrl+p
Tieni presente che non tutte le chiavi speciali sono gestite correttamente da xdotool
.E Ctrl+Alt+Del è gestito in modo molto speciale dal kernel e probabilmente non funziona se simulato; prova a eseguire sudo reset
invece di xdotool
.
Infine, lega tutto insieme a una sceneggiatura. Inseriscilo in un file di testo, ad esempio ~/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
Rendilo eseguibile (chmod +x ~/bin/midi-to-keys
) ed eseguilo (~/bin/midi-to-keys
).Ora, premendo E-5 o C-4 dovrebbe avere qualche effetto.
Modifica o aggiungi righe della forma "Note on x" ) command ;;
per fare quello che vuoi.
Ho avuto un problema simile, quindi ho programmato qualcosa che si adatta alle mie esigenze.
https://gitlab.com/enetheru/midi2input
Funziona in Linux e utilizza il sistema x windows per gli eventi di input da tastiera e mouse.
Utilizza lua per la configurazione e la mappatura, può eseguire qualsiasi azione come utente. ha il rilevamento su quale finestra è attiva utilizzando l'attributo X_CLASS in modo da poter effettuare mappature diverse per qualunque applicazione sia attualmente in esecuzione.
Ricarica automaticamente la configurazione in modo da non doverla chiudere e riaprire continuamente.
ho scritto una semplice regola udev per creare le connessioni midi quando collego il mio controller.
C'è persino un PKGBUILD di archlinux per archlinux, solo che non l'ho aggiunto all'aur.
L'idea era di rimuovere tutti i punti dolenti nel fare mappature dal controller centrale a tutto ciò che voglio.
Sono passati alcuni anni da quando l'ho creato e lo uso tutti i giorni, presto attenzione al repository, ma ci sono state solo una o due persone che mi hanno inviato un'e-mail a riguardo.