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, changer le volume d'une source, allumer un calque.
Selon l'endroit où vous utilisez EarMotion, la marche à suivre diffère.
Sur l'application desktop
Rien à installer. Le moteur écoute l'OSC en UDP sur le port 9130 dès son
démarrage. Envoyez-y vos messages, c'est tout.
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 15 ko.
Il fonctionne avec Python 3, présent d'origine sur macOS et sur Linux. Sur Windows, installez Python depuis python.org en cochant « Add Python to PATH ». 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 EarMotion, ouvrez le panneau OSC (colonne de gauche, après « Graphe de paramètres ») et cliquez sur Connecter le pont. Une petite fenêtre s'ouvre et affiche les messages reçus.
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 ni sur iPad : 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. Or un calque s'appelle
« calque nuit », et une source src_1723456789. Mis dans l'adresse, ces noms
seraient inutilisables. La forme /emt/sourceGain/src_42 reste acceptée quand le nom
s'y prête, mais elle n'est jamais la seule voie.
| 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 | id, 0…1 | Volume d'une source |
/emt/sourceAutoPlay | id, off / presence / always | Lecture autonome |
/emt/sourceAutoPause | id, secondes | Pause entre deux répétitions |
/emt/layerEnable | nom, 0 ou 1 | Allumer ou éteindre un calque |
/emt/layerVolume | nom, 0…1 | Volume d'un calque |
/emt/layerOpacity | nom, 0…1 | Opacité d'un calque |
/emt/setVar | nom, valeur | Poser une variable de scénario |
/emt/gotoMap | identifiant de carte | Changer de carte |
/emt/blackscreen | 0 ou 1 | Écran noir |
/emt/record | start / stop | Export audio |
La liste complète et à jour est affichée dans le panneau OSC lui-même, sous « Adresses reconnues » : elle est déduite du vocabulaire d'actions d'EarMotion, donc elle ne peut pas se désynchroniser de ce que l'application sait vraiment faire.
Les anciennes adresses restent valides
/transport/play, /transport/stop, /master,
/listener/xy, /map/leave et /source/<id>/gain
continuent de fonctionner : un patch écrit pour l'application desktop 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 |
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.
« 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 dans le vocabulaire. Comparez avec la liste du panneau, en respectant la casse exacte de l'action.
Sécurité. Le pont n'écoute que sur votre machine et ne parle qu'aux pages déclarées dans son code. Il ne s'expose pas au réseau et n'ouvre aucun accès entrant depuis l'extérieur.