Aller au contenu
roomi fields

Audio et matériel

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

Code source Site

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.toml donne un préfixe à chacun : deux MatrixBrute cohabitent en /matrixbrute-1 et /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/docs renvoie le guide de l’appareil, /electra1/routes/list la table des adresses. Vérifié sur le firmware 4.1.4 le 14 avril 2026.
  • Reconnaître ce qui est branché. osc-bridge detect envoie la requête d’identité MIDI, lit fabricant, modèle et firmware, et propose la ligne osc-bridge run avec les bons ports.
  • Sauvegarder les sons. osc-bridge backup enregistre dans un fichier .syx ce que l’appareil envoie ; restore le 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 de pencilresearch/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 lint signale chaque usage.
  • Navigateur. --ws-bind expose 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-origin en 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