X·MODAL DESIGNERv6.0 · 2026-04-29

bridge disconnected

🌉 Bridge Visualizer

Real-time view of OSC messages flowing through the bridge

Connected Devices
No devices connected — start the bridge and open output modules

INPUT (to bridge)
OUTPUT (from bridge)
WebSocket:
Input Catalog
Output Catalog
MIDI
OSC → MIDI CC out  ·  MIDI CC controller → OSC input  ·  no designer node needed
MIDI out
OSC → MIDI CC mappings
Source OSC address (exact or wildcard *) CC Ch
MIDI in
MIDI CC → OSC (controller input)
CC 0–127 Ch 1–16 OSC address to publish
Activity
Performance Mode

Performance controls will be added here

| 00:00.000 | |
Settings

Network ports — quick reference

Live registry served by the bridge from bridge/services.json. Edit that file to update — no code changes required.

Port Protocol URL What
Connecting to bridge…

Full architecture & protocol documentation: Project wiki ↗ · see Architecture.md, Bridge.md, Getting-Started.md

Custom outputs — how to add your own

Outputs aren't restricted to what the catalog ships. Any scene can declare custom OSC outputs with addresses you choose — useful for forwarding to TouchDesigner, Max/MSP, Resolume, or any UDP-OSC receiver. The catalog stays the source of truth for built-in devices (painting, synth, motors, lights, etc.); custom outputs live inside the scene file.

Where What it does
scene.json · output node Set data.source: "external", data.customizable: true, and data.osc to your chosen address (e.g. /external/demo/hands/left_x). The designer treats it as a regular output node.
bridge/osc_targets.json Add a router rule: { "match": "/external/demo/", "host": "127.0.0.1", "port": 9100, "enabled": true }. Every message under that prefix forwards to host:port over UDP. Multiple rules with the same match = fan-out to several receivers.
designer/output_catalog.json For outputs you'll use across many scenes, add an entry to the catalog instead. Cleaner long-term — the channel shows up in the standard output picker. Custom-in-scene is for one-off / scene-specific cases.

Reference scene: Scenes/demo_two_hands_painting_forwardingOutput.json uses this pattern to publish smoothed + delayed hand x/y/pinch streams under /external/demo/hands/* for an external receiver. The bridge re-reads osc_targets.json only on startup — restart the bridge after editing.

About X-Modal System

X-Modal System

Shared infrastructure for interactive art — a visual, node-based programming platform for sensor-to-output mapping across hardware and software.

Roberto Pugliese Fusco
Art & Technology · Uniarts Helsinki

Repositories

⎇ xmodal-system
codeberg.org/roberto-fusco/xmodal-system · bridge, designer, modules, catalogs
📖 xmodal-system wiki
codeberg.org/roberto-fusco/xmodal-system/wiki · architecture, discovery protocol, OSC namespaces, setup
🗄 ArtTechLab · Project Archival System
codeberg.org/roberto-fusco/ArtTechLab_ProjectArchiveSystem · companion archive that replays every saved project.json
🌐 robertofusco.net
Personal site · portfolio, writings, and other projects

Version

Designer v05.62 · OSC Bridge v2.5 · Discovery Protocol v2.4
⟶ Live Inputs
⟵ Live Feedback
— fps · — osc/s · — nodes