Cela ne peut pas être fait sans programmation.
Tout d'abord, testez comment détecter les événements MIDI. Allez dans un terminal et exécutez aseqdump -l
pour lister les ports MIDI ; cela affiche quelque chose comme ceci :
$ 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
Ensuite, exécutez-le avec le nom du client pour vérifier si les événements arrivent :
$ 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 ...
Deuxièmement, pour simuler des frappes au clavier, vous avez besoin de xdotool
. Si vous ne l'avez pas encore installé, exécutez sudo apt-get install xdotool
.Vous pouvez utiliser type
pour taper du texte, ou key
pour simuler des touches spéciales :
xdotool type Hello, World! xdotool key ctrl+p
Veuillez noter que toutes les clés spéciales ne sont pas gérées correctement par xdotool
.Et Ctrl+Alt+Del est géré très spécialement par le noyau et ne fonctionne probablement pas lorsqu'il est simulé ; essayez d'exécuter sudo reset
au lieu de xdotool
.
Enfin, liez le tout avec un script. Mettez ceci dans un fichier texte, par exemple, ~/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
Rendez-le exécutable (chmod +x ~/bin/midi-to-keys
) et exécutez-le (~/bin/midi-to-keys
).Maintenant, appuyer sur E-5 ou C-4 devrait avoir un certain effet.
Modifier ou ajouter des lignes de la forme "Note on x" ) command ;;
faire ce que tu veux.
J'ai eu un problème similaire, j'ai donc programmé quelque chose qui correspond à mes besoins.
https://gitlab.com/enetheru/midi2input
Fonctionne sous Linux et utilise le système x windows pour les événements de saisie au clavier et à la souris.
Il utilise lua pour la configuration et le mappage, peut effectuer n'importe quelle action en tant qu'utilisateur. a une détection sur quelle fenêtre est active à l'aide de l'attribut X_CLASS afin que vous puissiez faire des mappages différents pour n'importe quelle application en cours d'exécution.
Recharge automatiquement la configuration afin que vous n'ayez pas à la fermer et à la rouvrir tout le temps.
j'ai écrit une règle udev simple pour créer les connexions midi lorsque je branche mon contrôleur.
Il y a même un archlinux PKGBUILD pour archlinux, je ne l'ai juste pas ajouté à l'aur.
L'idée était de supprimer tous les points faibles lors de la création de mappages du contrôleur intermédiaire vers tout ce que je voulais.
Cela fait quelques années que je l'ai construit, et je l'utilise tous les jours, je fais attention au référentiel, mais il n'y a eu qu'une ou deux personnes qui m'ont envoyé un e-mail à ce sujet.