osc-bridge
Pont entre OSC et MIDI/SysEx qui décrit chaque instrument dans un fichier JSON, pilotable depuis un logiciel ou par un agent via MCP.
actif version v0.17.0, 29 octobre 2026 dernière modification 30 octobre 2026 licence AGPL-3.0-or-later
osc-bridge a commencé comme un pilote OSC pour l’Arturia MatrixBrute, dont le format de patch a été reconstruit à partir de sysex-controls et de l’outil communautaire MBPV ; il est devenu un pont générique quand la famille des protocoles Arturia s’est dessinée. C’est aujourd’hui le moteur de SynthHub, qui tient le catalogue des instruments. Sa limite principale : un instrument n’est piloté que comme son fichier le décrit, et la plupart de ces fichiers viennent de documentations constructeur ou de bibliothèques tierces, pas d’un essai sur la machine.
Un instrument, un fichier, une surface nommée
On peut penser osc-bridge comme un interprète posé devant chaque instrument. Côté client, une surface OSC aux adresses lisibles : /minilab3/pad/0/color, /minilab3/display/text. Côté instrument, les octets que la machine attend : CC, NRPN, trames SysEx. Entre les deux, un fichier JSON déclare l’encadrement SysEx, les commandes de haut niveau (couleur d’un pad, texte d’un écran, rappel de preset) et la table des paramètres. Ajouter un instrument ne demande pas de recompiler le programme, écrit en Rust.
Les logiciels passent par le même mécanisme. Ableton Live, Bitwig, Reaper, Sonic Pi, SuperCollider, Pure Data, TouchDesigner et VCV Rack y sont des instruments comme les autres, joints en OSC au lieu d’un câble MIDI. Le catalogue complet se cherche sur le site de SynthHub ; le format des fichiers est décrit par Open Synth Descriptors (OSD).
Commencer
Avec Node installé, le serveur MCP démarre sans autre installation :
npx -y @roomi-fields/osc-bridge mcp
Il expose huit outils à un client MCP (Claude Desktop, Claude Code, Cursor) : list_devices, get_device_docs, list_routes, send, get_status, detect_hardware, backup_presets, restore_presets. La configuration du client est dans docs/MCP.md du dépôt. On demande ensuite, par exemple, ce que sait faire la MatrixBrute ; le modèle lit ses adresses avec list_routes, puis envoie avec send. Par défaut, cette copie locale se relie au serveur de SynthHub, qui lui ajoute ses propres outils ; --offline coupe ce lien. Le serveur hébergé, sans rien installer, est décrit sur la fiche SynthHub.
Pour lister les ports MIDI de la machine :
npx -y @roomi-fields/osc-bridge list
Le 28 octobre 2026, avec la version 0.16.0, list a tourné tel quel, et le serveur MCP, lancé avec --offline, a donné ces huit outils. Le paquet npm de la 0.16.0 contient le catalogue ; un MiniLab 3 branché se pilote ainsi (les numéros de port viennent de list) :
osc-bridge run --device devices/arturia/minilab3.json --out-port 4 --in-port 0 \
--bind 127.0.0.1:7777 --osc-client 127.0.0.1:8888
osc-bridge osc-send /minilab3/pad/0/color 127 0 0
Ce qu’il fait
- Dans les deux sens. Ce que l’instrument envoie (un potentiomètre tourné, une réponse SysEx) revient en OSC vers un ou plusieurs clients.
- Plusieurs instruments dans un processus.
osc-bridge orchestrate --config bridge.tomldonne un préfixe à chacun : deux MatrixBrute cohabitent en/matrixbrute-1et/matrixbrute-2. Une section[[routes]]relie une source à une cible sans écrire de client, par exemple un potentiomètre du MiniLab au volume d’une piste d’Ableton. - Contrôleurs reconfigurables. Pour l’Electra One MK2, un preset envoyé en un message OSC reconfigure l’appareil et reconstruit la table de routage ;
/bridge/docsrenvoie le guide de l’appareil,/electra1/routes/listla table des adresses. Vérifié sur le firmware 4.1.4 le 14 avril 2026. - Reconnaître ce qui est branché.
osc-bridge detectenvoie la requête d’identité MIDI, lit fabricant, modèle et firmware, et propose la ligneosc-bridge runavec les bons ports. - Sauvegarder les sons.
osc-bridge backupenregistre dans un fichier.syxce que l’appareil envoie ;restorele renvoie, et écrase sa mémoire. - Provenance déclarée. Chaque fichier nomme ses sources dans
_sources[]: vérifié sur la machine, vérifié sur le logiciel, documentation constructeur, API OSC publiée, preset de la communauté Electra, import depencilresearch/midi. - Recours au Lua. Pour un protocole à somme de contrôle ou à état, un script Lua 5.4 tourne dans un bac à sable (1 Mio, 10 ms) ;
osc-bridge lintsignale chaque usage. - Navigateur.
--ws-bindexpose la même surface en OSC sur WebSocket, pour un client web. Seules les pages servies depuis la machine elle-même y ont accès ;--ws-allow-originen ajoute d’autres.
Où il en est
Binaires pour Windows, Linux et macOS. L’historique est dans le journal des versions du dépôt.
Sur la branche principale depuis le 27 octobre 2026, pas encore dans une version publiée : le catalogue a quitté le dépôt pour SynthHub, et osc-bridge y prend chaque fichier au besoin, un à un, gardé en cache sur la machine. Ce qui manque : la vérification sur machine de la plupart des instruments, qui dépend de qui possède le matériel.
Dépôt · SynthHub · Open Synth Descriptors (OSD) · l’article sur osc-bridge · vcv-osc · Electra One — widgets et plugin
Merci à sysex-controls (soyersoyer) et à l’outil MBPV, pour le format de patch de la MatrixBrute. Les sources du catalogue sont remerciées sur la fiche SynthHub.
Fabrication. Claude Code (Claude Opus 5.5), à partir du dépôt, de son README et de ses notes de version. Méthode