Piloter EarMotion en OSC
OSC permet de commander une carte depuis Max/MSP, Pure Data, TouchOSC, QLab, Reaper ou n'importe quel outil qui parle ce protocole : démarrer le son, déplacer le curseur d'écoute, rappeler un cue, changer le volume d'une source, allumer un calque.
Selon l'endroit où vous utilisez EarMotion, la marche à suivre diffère.
Sur l'application de bureau (installations)
L'application de bureau d'EarMotion, celle qui fait tourner les installations, reçoit l'OSC sans pont, en UDP
sur le port 9130. Le récepteur s'ouvre quand le fichier installation.txt le demande
(osc = oui, valeur par défaut d'une installation). Il n'écoute que la machine elle-même ; pour piloter
depuis un autre appareil, ajoutez osc-adresse = 0.0.0.0 (macOS demandera l'autorisation « Réseau
local »).
Elle ne comprend aujourd'hui que les adresses historiques : /transport/play,
/transport/stop, /master, /listener/xy, /map/leave. Les adresses
/emt/… présentées plus bas passent par le pont, dans un navigateur.
Sur le site web : lancer le pont
Un navigateur ne peut pas recevoir d'UDP — c'est une limite du navigateur, pas d'EarMotion. Il faut donc un petit programme intermédiaire, le pont, qui écoute l'OSC sur votre machine et le transmet à la page.
1. Récupérer le pont
Télécharger
emt-osc-bridge.py — un seul fichier, environ 20 ko.
Il fonctionne avec Python 3. Sur macOS, la première commande peut proposer d'installer les outils de
développement d'Apple : acceptez. Sur Linux, Python 3 est en général déjà là. Sur Windows, installez Python depuis
python.org en cochant « Add Python
to PATH » ; la commande est alors python emt-osc-bridge.py. Le pont
n'installe rien et n'utilise aucune bibliothèque extérieure.
2. Le lancer
Dans un terminal, dans le dossier où vous l'avez enregistré :
python3 emt-osc-bridge.py
Il annonce les ports qu'il utilise et attend. Laissez cette fenêtre de terminal ouverte.
3. Connecter la carte
Dans l'éditeur, activez d'abord le module OSC : colonne de droite › Modules › Gérer… (ou, en bas de la colonne de gauche, Bibliothèque de modules › Gérer les modules…). L'entrée OSC apparaît alors dans la colonne de gauche, groupe Interagir. Ouvrez Pont local et cliquez sur Connecter le pont…. Une petite fenêtre s'ouvre ; elle compte les messages reçus et affiche le dernier. Le pont reste connecté quand vous passez en Play.
Cette petite fenêtre doit rester ouverte. La fermer coupe le pont. Elle peut être réduite ou glissée dans un coin, mais pas fermée.
C'est le prix d'un détour nécessaire : depuis 2026, les navigateurs demandent une permission pour qu'une page atteigne un programme tournant sur votre machine, et cette permission n'est pas toujours proposée. Passer par une fenêtre évite entièrement la question.
Navigateurs. Le montage est vérifié sur Chrome 150 / macOS, de bout en bout depuis un émetteur OSC externe. Il n'a pas été vérifié sur Safari. Sur iPad et iPhone, le pont ne peut pas servir : il faut un ordinateur pour faire tourner le programme. Safari est historiquement le plus strict sur les liens entre fenêtres, et il se peut que la fenêtre du pont n'y parvienne pas à joindre EarMotion. En cas de doute, utilisez Chrome — ou l'application desktop, qui reçoit l'OSC sans pont.
Les adresses
Une adresse par action : /emt/<action>. Les actions qui visent quelque
chose de précis — une source, un calque — reçoivent son identifiant comme
premier argument.
Pourquoi l'identifiant est un argument et non un morceau de l'adresse.
Une adresse OSC n'accepte ni espace ni plusieurs autres caractères, alors qu'un identifiant de source
ressemble à src_1723456789_42. La forme /emt/sourceGain/src_42 reste acceptée, mais elle
n'est jamais la seule voie.
Attention : le nom ne suffit pas. Une source ou un calque se désigne par son identifiant
interne, que l'interface n'affiche pas encore. Pour viser une source ou un calque par un nom, passez par un
cue : réglez l'état voulu, puis Interagir › Cues › Capturer l'état actuel, nommez
le cue, et envoyez /emt/cueGo suivi de ce nom.
| Adresse | Arguments | Effet |
|---|---|---|
/emt/play | — | Démarrer le son |
/emt/stop | — | Arrêter le son |
/emt/masterVolume | 0…1 | Volume général |
/emt/listenerXY | x, y (0…1) | Position du curseur d'écoute |
/emt/sourceGain | identifiant de la source, 0…1 | Volume d'une source |
/emt/sourceAutoPlay | identifiant de la source, off / presence / always | Lecture autonome |
/emt/sourceAutoPause | identifiant de la source, secondes | Pause entre deux répétitions |
/emt/layerEnable | identifiant du calque, 0 ou 1 | Allumer ou éteindre un calque |
/emt/layerVolume | identifiant du calque, 0…1 | Volume d'un calque |
/emt/layerOpacity | identifiant du calque, 0…1 | Opacité d'un calque |
/emt/setVar | nom, valeur | Poser une variable de scénario |
/emt/gotoMap | adresse de la carte (ce qui suit map= dans son lien) | Changer de carte |
/emt/blackscreen | 0 ou 1 | Écran noir |
/emt/record | start / stop | Enregistrement de la sortie |
/emt/cueGo | nom du cue | Rappeler un cue (module « Cues et rappels d'état ») |
/emt/headPlay | nom de la tête, play / stop / rewind | Lancer, arrêter ou rembobiner une tête de lecture |
La liste complète est affichée dans le panneau OSC lui-même, sous « Adresses reconnues » : elle suit toujours ce que l'application sait faire.
Les anciennes adresses restent valides
/transport/play, /transport/stop, /master,
/listener/xy, /map/leave et /source/<id>/gain sont aussi compris par le
pont (et /cue, /head comme raccourcis de /emt/cueGo et
/emt/headPlay) : un patch écrit pour l'application de bureau marche tel quel.
Renvoyer la position vers votre contrôleur
La case Renvoyer la position du curseur fait émettre à EarMotion, vingt fois
par seconde, l'adresse /emt/etat/listener avec deux flottants entre 0 et 1, vers
127.0.0.1:9132. De quoi faire suivre un patch Max ou une surface TouchOSC.
Pour changer la destination :
python3 emt-osc-bridge.py --sortie 192.168.1.20:9000
Options du pont
| Option | Par défaut | Rôle |
|---|---|---|
--osc <port> | 9130 | Port UDP écouté |
--web <port> | 9131 | Port de la fenêtre du pont (à reporter dans le panneau OSC) |
--sortie <hôte:port> | 127.0.0.1:9132 | Où renvoyer l'OSC |
--lang fr|en | langue du système | Langue des messages du terminal |
--origine <adresse> | earmotion.net, et le port 8000 de cette machine | Une page de plus autorisée à recevoir l'OSC : un EarMotion servi ailleurs (auto-hébergé, serveur de test), par exemple --origine https://emt.mon-serveur.fr. Répétable, ou plusieurs adresses séparées par des virgules ; jamais de chemin après l'hôte et le port. |
Si ça ne marche pas
« Aucune réponse du pont » — le programme ne tourne pas, ou pas sur le port indiqué dans le panneau. Vérifiez le terminal.
« Le pont refuse cette page : origine non autorisée » — le pont tourne, mais vous utilisez
EarMotion depuis une autre adresse qu'earmotion.net. La fenêtre du pont affiche la même raison. Relancez le pont
avec l'adresse indiquée : python3 emt-osc-bridge.py --origine https://emt.mon-serveur.fr.
« pont non connecté » après avoir été connecté — la petite fenêtre du pont a été fermée : la fermer coupe le pont. Cliquez de nouveau sur Connecter le pont….
« La fenêtre a été bloquée » — le navigateur a bloqué l'ouverture. Autorisez les fenêtres pour earmotion.net et recommencez.
Le pont affiche « connecté » mais rien n'arrive — vos messages ne partent probablement pas sur le bon port. Le pont compte ce qu'il reçoit : si le compteur reste à zéro, le problème est en amont, dans l'outil qui émet.
Une adresse est reçue mais marquée « inconnue » — elle n'existe pas, ou ses arguments ne conviennent pas : cible absente, valeur hors liste. Comparez avec « Adresses reconnues », en respectant la casse exacte de l'action.
L'adresse n'est pas « inconnue », mais rien ne change — la cible ne correspond à aucune source ni à aucun calque (un nom ne suffit pas : passez par un cue). Si le panneau affiche « Module OSC éteint. », rallumez le module dans le gestionnaire.
Sécurité. La fenêtre du pont n'est joignable que depuis votre ordinateur, et elle ne transmet qu'à EarMotion. Le port OSC (9130), lui, reçoit les messages du réseau local : c'est ce qui permet de piloter la carte depuis TouchOSC sur un téléphone. Sur un réseau partagé, n'importe quel appareil de ce réseau peut donc envoyer des commandes à la carte tant que le pont tourne ; arrêtez-le (Ctrl-C) quand vous avez fini.