Docs
Everything is short. XOSC has very few moving parts on purpose.
Quick start
Bind a button and send your first OSC packet to Resolume in 60 seconds.
→Topics
Keyboard input
Bind any keystroke (with modifiers) as a trigger.
OSC output
How XOSC builds and sends OSC packets.
Resolume isn't reacting
A debugging checklist when packets seem to vanish.
The node graph
Many-to-many wiring on a snap-grid canvas.
Themes and gloss
Ten built-in themes, an in-app custom theme editor, and a tunable gloss intensity.
Keyboard shortcuts
Delete, copy, cut, and paste nodes on the canvas without reaching for the mouse.
MIDI input
Note On / CC / Pitch Bend / Program Change from any USB MIDI device.
Transform nodes — clamp, scale, hold-timer, latch, more
Mid-graph nodes that consume an event and re-emit a transformed one. Compose hold-timer + scale + latch the way you'd compose UNIX commands.
Edge dispatch modes — parallel, sequential, after-prev
Control whether a fan-out fires all-at-once or in order, with delays, with optional skip-on-error.
Gamepad input
Xbox / DualSense / DualShock / generic HID controllers via the HTML5 Gamepad API.
OSC In node — receiving OSC
Open a UDP listener and route arbitrary inbound OSC packets to any sink. Loopback by default; LAN-visible is opt-in.
Serial input
Open any COM port. Each line of incoming data becomes a discrete trigger.
Serial output
Sink node that writes to a COM port. Closes the Resolume → Arduino LED feedback round-trip.
Resolume — OSC integration
Default ports, address structure, modifier args, and the OSC discovery workflow.
Resolume — parameter picker & live previews
Browse Resolume's live composition tree from inside XOSC, with thumbnail previews for clips.
Resolume — REST & WebSocket
When to reach for the HTTP/WS API instead of OSC, and how to use it from XOSC.
Next-session handoff
Read-this-first brief for whoever picks up XOSC after v0.5.2 ships. Self-contained — written so you can /clear and resume cold.
Ideas & planning notes
Forward-looking design notes for XOSC. Anything in here is a proposal, not a commitment.
Architecture limits & loop protection
How chains actually run today, where they break, and what stops an infinite loop (spoiler — almost nothing yet).
Dispatch semantics — fan-out, ordering, parallel vs. sequential
How XOSC fires multiple sinks from one input today, and the proposed dispatch-mode model for v0.5 (matters most for DMX + cross-protocol chains).
v0.5 backlog (ordered)
The actual ordered to-do list for the next session, sized and dependency-tagged.
DMX integration — feasibility study
Can XOSC drive DMX universes too? What we'd borrow from TagTable, what we can't reuse, and the realistic shape of a v0.6/0.7 milestone.
Competitor gap analysis
Where XOSC already wins, where it loses by default, and which gaps are worth closing in v0.5+.
Math & logic nodes (proposal)
A new node kind that's both a sink and a source. Clamp, scale, invert, hold-timer, double-tap, threshold, latch — composable mid-graph.
OSC inbound listener (osc-in node)
Open a UDP port, parse incoming OSC, push it onto the inputBus. Closes the loop for arbitrary external OSC sources, not just Resolume's WS.
mDNS / network auto-discovery
Find Resolume + other OSC peers on the LAN automatically so users don't have to type IP addresses.
DMX milestone — plan index
The v0.6 plan for full DMX support, split into two parallel tracks so two agents can work the same repo.
DMX hardware backends — port spec
Five DMX transmitters from TagTable, ported to XOSC's main process with a single Transmitter interface.
Fixture profile library
JSON schema + 8 built-in profiles so users can pick a fixture instead of hand-rolling channel offsets.
dmx-out and dmx-in node kinds
How DMX hits XOSC's node graph. Two new node kinds, plus a router hook that bridges to the universe bus.
Sequence engine — cue lists, layers, priority
Port TagTable's lighting-template engine, generalize it to multi-channel, and design slot-based exclusivity on top.
Pad launcher (Sequences panel)
New top-level panel with a grid of pads. Each pad starts/stops a sequence, hot-keyable, OSC-controllable, exposed to the input bus.
Mixer — composing layers and graph writes into a universe frame
How writes from many sources become one 512-byte frame per universe per tick.
Clocks — shared origins, tap tempo, external sync
How sequences can move in lockstep, and where a tempo source comes from.
Logging and diagnostics
Cross-track. How DMX work writes to the existing debug log + sink-rate gauge + cycle detector.
Themes and UI conventions
Cross-track. DMX lands inside XOSC's existing UI vocabulary — no new visual language, no inline colours.
Rollout plan & milestones
How v0.6 phases land. What ships first, what ships last, what's the bare minimum that's still useful.
HANDOFF — Track A (hardware + graph integration)
Read-this-first brief for whoever picks up Track A of the DMX milestone. Self-contained — written so you can /clear and resume cold.
HANDOFF — Track B (sequences + pad launcher + mixer)
Read-this-first brief for whoever picks up Track B of the DMX milestone. Self-contained — written so you can /clear and resume cold.