Configure OSC Data Out
In the Performer show bar, open Control I/O → Data Out, configure the receiver,
and turn on OSC Data Out. The counters report complete topology and state batches,
not individual UDP datagrams. Every eligible family, shell and response-spectrum
bin is included. Rate changes transmission cadence; it does not change the
acoustic model. There is no mode cap.
In Performer, the authoritative stage supplies the model with Output set to
Off, Display, Syphon, or Spout. Enable OSC Data Out independently
of the video destination.
Topology describes the static basis, signed source overlaps, natural frequencies,
Q and finite-response transitions. State carries signed pressure/velocity,
raw pressure/velocity moment matrices, normalization energy, source sample clocks,
finite-response spectral inputs and material controls. These are normalized
virtual-system quantities, not a calibrated measurement of a venue’s sound field.
A receiver holds the sampled state; it must not invent phase progression from its
own clock. Material RGB values are display controls, separate from acoustic energy.
Receivers
The committed full model is also available as
component.fetch('receiver').topology and .state. Tables change only after
complete commits or explicit invalidation. Incomplete packets never display a
partially updated field. A new topology clears the previous state while waiting
for its matching observation.
Stream lifecycle
Only/baryon/hello activates a new stream UUID. A new UUID permanently retires
the previous one. /baryon/v5/clear clears and retires its UUID, including queued
assemblies. Delayed hello messages cannot revive a retired stream.
Retargeting clears the old target and uses a new UUID. Socket recovery advertises
the stream and reinstalls cached topology, but requests a fresh dynamic sample.
Topology is also repeated every two seconds for loss recovery. Identical topology
replay does not install a second model. Unchanged samples send nothing. Loss of
source authority clears the receiver and requires a new complete matching model.
Sample identity uses the acoustic epochs, frame/sample endpoint and source phase,
plus the canonical exported material value. Renderer counters and render receipts
are not part of acoustic state or export eligibility. Material is accepted display
input, not a claim that pixels have reached a GPU or screen.
The producer owns audio state. Receiver acknowledgements, mirror telemetry,
transport completion and topology replay cannot start or reset audio.
OSC message contract
The application name isBaryon; transport is osc-structure; version is 5.
OSC integers below are signed 32-bit; revision and sequence counters start at one
and rotate to a new stream before exhaustion. Acoustic counters inside the
binary payload retain their nonnegative JavaScript safe-integer range.
Pages contain at most 960 bytes; every page except the final one contains
exactly 960. Indices are zero-based. Every complete OSC datagram is at most
1,200 bytes, including padding. Payloads are bounded to 4 MiB and JSON headers
to 16 KiB. An oversized model is rejected explicitly, never silently truncated.
Begin, all pages and end must agree. Verify the lowercase hexadecimal SHA-256
of the concatenated payload before decoding or publication. Reject conflicting
duplicate pages. Reordering and identical duplicates are allowed. Keep no more
than two topology and two state assemblies; expire incomplete assemblies after
250 ms. An expired/rejected state sequence cannot be resurrected by late pages.
An incomplete static topology may recover from an identical genuine replay.
Commit state only after its complete topology revision exists, its source epochs
match and its physical packet validates. Reject regressed observation sample/frame
clocks and sequences at or below the last committed sequence. A newer complete
snapshot can recover after a lost one; UDP does not guarantee delivery.
Binary payload
baryon-full-model-le-v1 preserves Float64 values without quantizing or
renormalizing them. The byte layout is:
- Four magic bytes
42 59 4e 35(BYN5). - Unsigned 32-bit little-endian JSON-header byte length.
- UTF-8 JSON
{schemaVersion:5, kind, metadata, arrays}. - Arrays concatenated in the fixed order below, with no inter-array padding.
{name, type, length}; length counts elements.
u16 is unsigned 16-bit little-endian; f64 is IEEE-754 Float64 little-endian.
Reject an unexpected name/type/order, inconsistent dimensions, nonfinite values,
trailing bytes or invalid acoustic state. Typed-array lengths are checked before
allocation. The complete reference decoders are in
scripts/osc/receive-structure-export.mjs and
scripts/touchdesigner/osc_structure_receiver.py in the source checkout.
Topology metadata contains the v3 acoustic topology’s scalar fields and spectrum
convention, plus
fieldConvention. State metadata contains the v3 observation’s
scalar fields and spectrum endpoint, plus material. Binary transitions, inputSpectrum and
boundaryDelta are restored under each packet’s spectrum object.
For F families, K shells, C channels and spectrum frame size N:
familyIndices has 3F elements; familyShells and sourceOverlaps have F;
natural frequencies and Q have K; transitions have 6K. Pressure and velocity
have CK values in channel-major order. Each raw moment matrix is K × K,
row-major. Input spectrum contains C(N/2+1) complex bins, interleaved real/imaginary
in channel-major order; boundary deltas have 2CK values, interleaved
pressure/velocity. No phase-offset or phase-velocity vector is transmitted.