Configure OSC Data Out
Open Performer Mode → Control I/O → OSC Data Out, configure the
receiver, and enable the switch. The status reports complete topology and
state batches; it does not count individual UDP datagrams.
The main Baryon process owns UDP and samples one authoritative producer at the
selected rate. OSC alone does not start the visual-output helper. When Display,
Syphon, or Spout is configured, the authoritative stage becomes the producer;
Baryon does not fall back to the local preview while that stage is unavailable.
Unchanged resolved samples send nothing. Structural topology is sent
transactionally when mode identity, natural frequency, Q, geometry, or mode cap
changes, and every two seconds as a recovery keyframe. Observation-derived
response, support, and circular moments travel in grouped state messages;
dynamic state is never replayed from a cache.
Terminal receiver
TouchDesigner monitor
Download baryon_osc_structure.tox, drop it into a network, and keep its OSC Data Port aligned with Baryon. Itsframe, global, coverage, material, modes, spectral_moments, and
raw DATs update only after complete monotonic commits.
The source checkout includes the v4 generator:
.tox must still be opened and inspected inside TouchDesigner;
headless generation and schema validation cannot prove operator behavior.
v4 stream lifecycle
streamSessionId is a unique UUID. Only /baryon/hello may activate an
unknown stream. Activating a new stream permanently retires the previous UUID.
/baryon/v4/clear clears and permanently retires its stream. Delayed packets
and delayed hello messages from retired streams are ignored.
Retargeting sends clear to the old target, allocates a new UUID, and re-encodes
the committed topology while reusing the healthy UDP socket. Changing rate
keeps the stream and resends hello. Changing the mode cap creates a new topology
transaction.
Messages
Every address is one UDP datagram and stays at or below 1,200 bytes. Vector messages are paged only when their payload would exceed that boundary. Each page addsstartMode and pageModeCount; single-value vectors fit all 160
modes in one page, while paired vectors use at most 104 modes per page.
OSC
d values carry engine generations, engine topology revision, frame ID,
and applied-control revision. Wire sequences/revisions are signed int32 values
from 1 through 2,147,483,647; Baryon rotates the stream before wrap.
Receiver commit rules
A receiver should stage topology by(stream, exportRevision) and state by
(stream, stateSequence, exportRevision).
- Only a complete greater topology revision replaces active topology.
- Equal-revision recovery is accepted only when byte-identical.
- A state commits only at message mask
511, after every vector range covers exactly0…modeCount-1, with the active topology revision. - A state sequence less than or equal to the last committed sequence is rejected.
- An early state end remains pending; incomplete state expires after
250 msor two newer sequences. - Committing newer topology discards obsolete assemblies.
Phase
phaseReferenceTimeSeconds is the observation time, falling back to frame time.
For advancing observations, extrapolate from local commit time. When
observationAdvancing is 0, use the phase at reference unchanged; paused
files must not continue oscillating.
Value semantics
The exported coefficient is normalized modal amplitude. Natural frequency and Q are structural mode parameters; response frequency and observed support are observation-derived state. Frequencies are hertz, phase offsets are radians, and phase velocities are radians per second.spectralMomentX/Y and spectralSecondMomentX/Y are the canonical first and
second circular spectral moments. They are physical pitch descriptors, not RGB
values, confidence, or mass fields.
modeCount = min(activeModalFieldModeCount, configuredModeCap). The maximum
cap matches the engine’s 160-mode capacity; it never pads a smaller active
field. modeCount = 0 still sends every vector address with startMode = 0,
pageModeCount = 0, and no vector values.
Coverage and authority fields distinguish silence from capacity or descriptor
limitations.