Cette page explique une méthode alternative pour contrôler le transport MIDI (avec son clavier MIDI) pour les logiciels qui ne supportent pas le protocole standard MMC.
Ou plus généralement : comment envoyer des raccourcis claviers à vos applications avec un contrôleur MIDI.
On notera qu'il est possible d'utiliser le protocole standard MMC avec certains des logiciels utilisés dans cette documentation, et que c'est bien plus simple (mais ne fonctionne apparement pas avec tous les systèmes, d'où la manip').
Étant propriétaire d’un Axiom25, j’ai été confronté à un souci : comment configurer les touches de commande avec mon logiciel séquenceur MIDI. C’est après quelques recherches et en additionnant 2 outils (mididings et xdotool) qu’il m’a été possible de configurer le tout.
Je vous propose sur cette page ma méthode utilisée pour configurer les contrôleurs MIDI avec vos logiciels préférés.
Comme expliquer plus haut, nous avons besoin de 2 outils pour que cette configuration fonctionne :
C’est un routeur/processeur d'évènements MIDI.
(Je ne reviens pas ici sur l’installation, la page wiki est très bien faite)
Cet outil permet de simuler des évènements claviers et souris, il permet également d'envoyer des ordres divers aux objets X (logiciels ouverts par exemple).
Installation par gestionnaire de paquet :
Nous supposons également que votre poste est fonctionnel (QJackCtl, Qtractor ou Rosegarden par exemple correctement installés et ouverts).
Il s’agit ici de repérer quelle commande nous allons envoyer avec le contrôleur.
Exemple dans Qtractor => touche « espace » correspond à la commande « lecture ».
Nous allons récupérer le code MIDI envoyé par le contrôleur. Sur l’Axiom25 la valeur est indiquée sur l’écran LCD lors de la pression sur le contrôleur, pour tout autre matériel utiliser la commande :
(ne pas oublier de relier votre contrôleur à mididings dans jack)
Lancer votre éditeur de texte préféré et rentrer :
Cette commande va récupérer l’ID du logiciel, ici Qtractor (cette action est équivalente à la commande xwininfo).
Cette commande rend votre logiciel « actif » comme lorsque l’on clique dessus.
Ici nous y injectons la touche espace.
On enregistre le fichier de manière à pouvoir le retrouver facilement (par exemple nom de fichier : qtractor_espace), puis on rend exécutable le fichier :
Ligne aux allures un peu barbare mais en réalité pas vraiment méchante…
117 correspond au numéro de votre contrôleur (rappelez-vous => mididings "Print()" ).
127 est la valeur envoyée par votre contrôleur lors de la pression de la touche (on appuie => 127, on relâche =>0)
là, on va chercher notre script xdotool.
Enfin,
Cette syntaxe signifie que lorsque les conditions A et B sont réunies, on exécute l’ordre C (concrètement c’est lorsqu’on appuie sur le contrôleur que le script est lancé).
On sauvegarde le fichier (par exemple midi.py) et enfin, on le lance :
(ne pas oublier de relier votre contrôleur à mididings dans jack)
xdotool est très permissif, il accepte les commandes de type
ou encore
Pour les touches spéciales, vous pouvez utiliser les keycodes. Pour récupérer le keycode de votre touche, utiliser xev.
Exemple :
Nous avons vu ici des exemples pour configurer des commandes de transport, mais sachez que ces outils sont universels et les commandes n’ont pour seule limite que votre imagination. Vous pouvez par exemple vous servir du contrôleur pour enregistrer votre travail (raccourci ctrl+s).
Licence
La licence de cet article est la Creative Commons suivante :
http://creativecommons.org/licenses/by-sa/2.5/deed.fr
Extrait :
voir la version intégrale de la licence
Ou plus généralement : comment envoyer des raccourcis claviers à vos applications avec un contrôleur MIDI.
On notera qu'il est possible d'utiliser le protocole standard MMC avec certains des logiciels utilisés dans cette documentation, et que c'est bien plus simple (mais ne fonctionne apparement pas avec tous les systèmes, d'où la manip').
Table des matières
Synopsis
Étant propriétaire d’un Axiom25, j’ai été confronté à un souci : comment configurer les touches de commande avec mon logiciel séquenceur MIDI. C’est après quelques recherches et en additionnant 2 outils (mididings et xdotool) qu’il m’a été possible de configurer le tout.
Je vous propose sur cette page ma méthode utilisée pour configurer les contrôleurs MIDI avec vos logiciels préférés.
Pré-requis
Comme expliquer plus haut, nous avons besoin de 2 outils pour que cette configuration fonctionne :
mididings
page wiki dédiée : mididings.C’est un routeur/processeur d'évènements MIDI.
(Je ne reviens pas ici sur l’installation, la page wiki est très bien faite)
xdotool
site internet : http://www.semicomplete.com/projects/xdotool/.Cet outil permet de simuler des évènements claviers et souris, il permet également d'envoyer des ordres divers aux objets X (logiciels ouverts par exemple).
Installation par gestionnaire de paquet :
Copy to clipboard
apt-get install xdotool
Nous supposons également que votre poste est fonctionnel (QJackCtl, Qtractor ou Rosegarden par exemple correctement installés et ouverts).
Repérage / configuration des raccourcis clavier de votre logiciel
Il s’agit ici de repérer quelle commande nous allons envoyer avec le contrôleur.
Exemple dans Qtractor => touche « espace » correspond à la commande « lecture ».
Identification du contrôleur
Nous allons récupérer le code MIDI envoyé par le contrôleur. Sur l’Axiom25 la valeur est indiquée sur l’écran LCD lors de la pression sur le contrôleur, pour tout autre matériel utiliser la commande :
Copy to clipboard
mididings "Print()"
(ne pas oublier de relier votre contrôleur à mididings dans jack)
Création du script xdotool
Lancer votre éditeur de texte préféré et rentrer :
Copy to clipboard
#!/bin/bash WID=`xdotool search --title "Qtractor" | head -1` xdotool windowfocus $WID xdotool key space
Explications :
Copy to clipboard
WID=`xdotool search --title "Qtractor" | head -1`
Cette commande va récupérer l’ID du logiciel, ici Qtractor (cette action est équivalente à la commande xwininfo).
Copy to clipboard
xdotool windowfocus $WID
Cette commande rend votre logiciel « actif » comme lorsque l’on clique dessus.
Copy to clipboard
xdotool key space
Ici nous y injectons la touche espace.
On enregistre le fichier de manière à pouvoir le retrouver facilement (par exemple nom de fichier : qtractor_espace), puis on rend exécutable le fichier :
Copy to clipboard
chmod +x « votre dossier »/qtractor_espace
Création du script mididings
Copy to clipboard
from mididings import * run ( (CtrlFilter(117) & CtrlValueFilter (127)) % System("/home/christophe/./qtractor_espace") )
Explications :
Copy to clipboard
(CtrlFilter(117) & CtrlValueFilter (127)) % System("/home/christophe/./qtractor_espace")
Ligne aux allures un peu barbare mais en réalité pas vraiment méchante…
Copy to clipboard
CtrlFilter(117)
117 correspond au numéro de votre contrôleur (rappelez-vous => mididings "Print()" ).
Copy to clipboard
CtrlValueFilter (127)
127 est la valeur envoyée par votre contrôleur lors de la pression de la touche (on appuie => 127, on relâche =>0)
Copy to clipboard
System("/home/christophe/./qtractor_espace")
là, on va chercher notre script xdotool.
Enfin,
Copy to clipboard
(A & B) % C
Cette syntaxe signifie que lorsque les conditions A et B sont réunies, on exécute l’ordre C (concrètement c’est lorsqu’on appuie sur le contrôleur que le script est lancé).
On sauvegarde le fichier (par exemple midi.py) et enfin, on le lance :
Copy to clipboard
python midi.py
(ne pas oublier de relier votre contrôleur à mididings dans jack)
Compléments d’information
Récupérer la valeur d’une touche pour xdotool
xdotool est très permissif, il accepte les commandes de type
Copy to clipboard
xdotool key F6
ou encore
Copy to clipboard
xdotool key ctrl+o
Pour les touches spéciales, vous pouvez utiliser les keycodes. Pour récupérer le keycode de votre touche, utiliser xev.
Additionner plusieurs commandes dans mididings
Exemple :
Copy to clipboard
from mididings import * run ( [ (CtrlFilter(117) & CtrlValueFilter (127)) % System("/home/christophe/./qtractor_espace"), (CtrlFilter(114) & CtrlValueFilter (127)) % System("/home/christophe/./qtractor_retour"), ] )
Aller plus loin avec ces outils
Nous avons vu ici des exemples pour configurer des commandes de transport, mais sachez que ces outils sont universels et les commandes n’ont pour seule limite que votre imagination. Vous pouvez par exemple vous servir du contrôleur pour enregistrer votre travail (raccourci ctrl+s).
Licence
La licence de cet article est la Creative Commons suivante :
http://creativecommons.org/licenses/by-sa/2.5/deed.fr
Extrait :
Paternité - Partage des Conditions Initiales à l'Identique 2.5
Vous êtes libres :
Selon les conditions suivantes :
À notez que :
Ce qui précède n'affecte en rien vos droits en tant qu'utilisateur (exceptions au droit d'auteur : copies réservées à l'usage privé du copiste, courtes citations, parodie...)
Vous êtes libres :
- de reproduire, distribuer et communiquer cette création au public
- de modifier cette création
- d'utiliser cette création à des fins commerciales
Selon les conditions suivantes :
- by: Paternité. Vous devez citer le nom de l'auteur original.
- sa: Partage des Conditions Initiales à l'identique. Si vous modifiez, transformez ou adaptez cette création, vous n'avez le droit de distribuer la création qui en résulte que sous un contrat identique à celui-ci.
À notez que :
- À chaque réutilisation ou distribution, vous devez faire apparaître clairement aux autres les conditions contractuelles de mise à disposition de cette création.
- Chacune de ces conditions peut être levée si vous obtenez l'autorisation du titulaire des droits.
Ce qui précède n'affecte en rien vos droits en tant qu'utilisateur (exceptions au droit d'auteur : copies réservées à l'usage privé du copiste, courtes citations, parodie...)
voir la version intégrale de la licence