Skip to content

feat(control): professional OSC input on the show address tree - #735

Merged
CaYatur merged 4 commits into
mainfrom
feat/osc-input
Oct 11, 2026
Merged

CaYatur merged 4 commits into
mainfrom
feat/osc-input

Conversation

@CaYatur

@CaYatur CaYatur commented Oct 11, 2026 •

Copy link
Copy Markdown
Owner

Refs #734. This is the input side. It does not replace #733.

The branch started at 53cf956. #733 has since moved to ce44d25 (crossfade and panel-slider feedback). This PR still targets feat/osc-output. Merge #733 first, then retarget this PR to main. Head of this PR is 89078cc.

Verified

  • Documented address tree in README.md and README.tr.md, same prefix as output (/cayadev unless changed)
  • Off by default. UDP 9000, IPv4 and IPv6, more than one sender
  • Learn mode still maps an address the tree does not own
  • Scenes by name, layers, visualizer, background, palette, blackout, transition, Auto VJ, MilkDrop preset by name on the full library, clip deck, timeline
  • /show/opacity is a real master opacity, 0..1. It fades the live picture, the web overlay and an export. It is not stored in a scene. /crossfade stays the A/B master
  • OSCQuery HTTP on port 9010 with TYPE, RANGE, VALUE, and /?HOST_INFO
  • mDNS _oscjson._tcp. OSC input still runs if port 5353 is busy
  • A bundle is applied in order and sent to the visualizer once
  • A timetag up to 30 seconds ahead waits. An immediate tag, a late tag, or a tag further than 30 seconds ahead applies now
  • Name strings are UTF-8
  • /deck/launch is two integers, the same row and column /deck/active reports
  • Slider ranges match the panel sliders, not a 0..1 or 0..127 scale
  • A packet that does not parse is dropped
  • npm test: 2979 pass, 0 fail on a69aeee. 4f60b90 merges feat/osc-output and does not change that tree
  • npm run smoke passed on 89078cc, including the English UI scan. The first smoke of that commit failed on two context-loss probes; the retry passed. Those probes do not read the master veil
  • A real UDP datagram from the output sender was received by the input parser. The packet carried /cayadev/show/opacity 0.5 and /cayadev/audio/sensitivity 1.25, and the tree planned master at 0.5. Re-run after the push: pass, about 47 ms

Checked, and kept on purpose

  • /show/brightness stays background.gradient.brightness, often 0.4..1.6. The show master is /show/opacity
  • docs/screenshots/panel-control.png shows the OSC Output card. Captured with --shots --only=panel-control
  • Hits leave when the capture frame reaches the main process. A UDP packet contained /cayadev/hit/kick. File playback still sends from the window. The same path is on feat(control): professional OSC output for show control #733 at be79d96

The desk writes the same prefix OSC output already publishes. A bundle
is applied in order and sent once. A timetag waits at most two seconds.
OSCQuery and mDNS advertise the tree. Learn mode still maps addresses
the tree does not own.

CaYatur commented Oct 11, 2026 •

Copy link
Copy Markdown
Owner Author

Updated for 89078cc on feat/osc-input. The earlier note on df3619d is superseded by this one.

npm test: 2977 pass, 0 fail. npm run smoke passed on the retry, including the English UI scan. The first smoke of this commit failed two context-loss probes; the retry passed.

UDP in and out, on a real socket: the output sender emitted a datagram, the input parser received it, and the tree planned the write. The packet carried /cayadev/show/opacity 0.5 and /cayadev/audio/sensitivity 1.25. Planned master was 0.5. Re-run after the push: pass, about 47 ms.

Also on this commit: /show/opacity is a master fader for the live picture, the web overlay and an export, and it is not a scene key. A future timetag waits up to 30 seconds; further ahead applies now. A MilkDrop name matches the full library. Output on this branch echoes /show/opacity, /crossfade and the panel sliders.

#733 is now at ce44d25. That commit echoes /crossfade and the panel sliders. It does not send /show/opacity, because that branch has no master fader.

Still open: the control-card screenshot (MCP was not running), native-callback hits on #733, and /show/brightness remaining the gradient brightness. Learn mode stays. Not merged. Merge #733 first, then retarget this PR to main.

@cayadraft

cayadraft Bot commented Oct 11, 2026

Copy link
Copy Markdown

@CaYatur

CaYaDraft — pull request

Summary
This pull request implements professional OSC input functionality for the show address tree, including an HTTP query server and mDNS discovery. It adds new configuration options like a separate query port and prefix, while ensuring backward compatibility with existing mappings.

Files

  • README.md, README.tr.md (documentation updates)
  • src/admin/control.js, src/main/osc-query.js, src/main/osc-server.js (core input logic)
  • src/shared/defaults.js, src/shared/i18n.js (configuration and localization)

Note
Nothing blocking is visible from the text.


Stopping here. I will not merge, push, or change this pull request until you ask.

/caya explain describes the diff. /caya plan previews the next edit. /caya revise adds a commit.

/show/opacity fades the live picture, the web overlay and an export.
Output sends that value, the crossfader and the panel sliders on the
addresses input already accepts. A future timetag waits up to 30
seconds. A MilkDrop name matches the whole library, not the filtered list.
Kick, snare and hat leave as soon as the native capture frame reaches
the main process, then a closing 0. A real UDP packet carried
/cayadev/hit/kick. File playback still sends from the window. The
control-page screenshot shows the OSC output card.
Keep the input branch test count and /show/opacity. The capture-frame
hit path is on both sides.

CaYatur commented Oct 11, 2026

Copy link
Copy Markdown
Owner Author

Head is now 4f60b90, which merges feat/osc-output (be79d96) and keeps the input tree from a69aeee.

Every box in the description is checked.

npm test on a69aeee: 2979 pass, 0 fail. The merge commit does not change that tree.

Hits leave when the capture frame reaches the main process. A UDP packet contained /cayadev/hit/kick, then a closing 0. File playback still sends from the window.

docs/screenshots/panel-control.png shows the OSC Output card.

/show/brightness stays the background gradient. The show master is /show/opacity.

OSCQuery, the 30 second timetag, and master opacity are on this PR. Not merged. Merge #733 first, then this one.

@CaYatur CaYatur mentioned this pull request Oct 11, 2026
@CaYatur
CaYatur changed the base branch from feat/osc-output to main October 11, 2026 17:50
@CaYatur
CaYatur merged commit ca80bd2 into main Oct 11, 2026
5 checks passed
@CaYatur
CaYatur deleted the feat/osc-input branch October 11, 2026 17:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant