GNU/Linux >> Tutoriels Linux >  >> Linux

Traduire l'entrée MIDI en frappes informatiques sous Linux ?

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.


Linux
  1. Comment rendre un ancien ordinateur utile à nouveau

  2. Termux transforme Android en environnement de développement Linux

  3. Le fabricant d'ordinateurs Linux va déplacer la fabrication aux États-Unis

  4. Redirection d'entrée/sortie sous Linux/Unix

  5. Déplacer l'installation Linux sur un nouvel ordinateur

Patch dans The Matrix à la ligne de commande Linux

Explication de la commande Linux dd pour les débutants (8 exemples)

Comment démarrer en ligne de commande Linux

GSConnect intègre un téléphone Android à un ordinateur Linux

Explication de la redirection d'entrée-sortie sur Linux

Fichier audio de tuyau Linux vers l'entrée du microphone