openmixer — generated API reference
    Preparing search index...

    Type Alias MessageParams

    MessageParams: UndoSetLabelParams & {
        "invalid-message": NoMessageParams;
        "no-stagebox-registry": NoMessageParams;
        "no-state-dir": NoMessageParams;
        "sip-disarmed": NoMessageParams;
        "takeover-unsupported": NoMessageParams;
    } & { readonly [C in StageboxAssignRefusal]: StageboxAssignRefusalParams } & {} & {
        readonly [C in InsertLatencyCode]: LatencyBudgetParams
    } & {
        "channel.order.drive-before-eq.detail": StageOrderParams;
        "channel.order.drive-before-eq.title": StageOrderParams;
        "channel.order.gate-not-first.detail": StageOrderParams;
        "channel.order.gate-not-first.title": StageOrderParams;
        "channel.order.tail-before-dynamics.detail": StageOrderParams;
        "channel.order.tail-before-dynamics.title": StageOrderParams;
        "clock.device-disabled.detail": DeviceDisabledParams;
        "clock.device-disabled.rate-detail": DeviceDisabledRateParams;
        "clock.device-disabled.title": DeviceDisabledParams;
        "clock.device-row.rates-unknown": DeviceDisabledParams;
        "clock.device-row.resampled": DeviceRowReasonParams;
        "clock.device-row.synchronous": DeviceRowReasonParams;
        "clock.driver-ring-shallow.detail": DriverRingShallowParams;
        "clock.driver-ring-shallow.title": DriverRingShallowParams;
        "clock.follower-rate-mismatch.detail": FollowerRateMismatchParams;
        "clock.follower-rate-mismatch.title": FollowerRateMismatchParams;
        "clock.master-profile.detail": MasterProfileParams;
        "clock.master-profile.title": MasterProfileParams;
        "clock.no-owner.detail": NoMessageParams;
        "clock.no-owner.title": NoMessageParams;
        "clock.synthetic-driver.detail": NoMessageParams;
        "clock.synthetic-driver.title": ClockDriverParams;
        "clock.two-owners.detail": ClockOwnerParams;
        "clock.two-owners.title": NoMessageParams;
        "clock.unqualified-master.title": NoMessageParams;
        "discovery.blind.global": BlindGlobalParams;
        "discovery.blind.link": BlindLinkParams;
        "discovery.reac.active-probe-failed": ProbeErrorParams;
        "discovery.reac.active-probe-no-reason": NoMessageParams;
        "discovery.reac.link-busy": BusyLinkParams;
        "discovery.reac.nic-enumeration-failed": ProbeErrorParams;
        "discovery.reac.not-listening-here": OtherScopesParams;
        "discovery.reac.not-publishing": NoMessageParams;
        "discovery.reac.passive-listen-failed": ProbeErrorParams;
        "discovery.reac.predates-discovery": NoMessageParams;
        "discovery.reac.registry-unloaded": NoMessageParams;
        "discovery.reac.stale": StaleProbeParams;
        "discovery.reac.unknown-state": UnknownProbeStateParams;
        "discovery.reac.unparseable": NoMessageParams;
        "export.already-running": NoMessageParams;
        "export.empty": NoMessageParams;
        "export.no-engine": NoMessageParams;
        "export.no-main": NoMessageParams;
        "export.no-space": RenderSpaceParams;
        "export.unreadable": NoMessageParams;
        "feedback.loop.no-cuttable-edge": NoMessageParams;
        "hardware.contradiction.channels": ContradictionCountParams;
        "hardware.contradiction.model": ContradictionParams;
        "hardware.contradiction.width": ContradictionCountParams;
        "hardware.missing.bridge-down": NoMessageParams;
        "hardware.missing.clause-separator": NoMessageParams;
        "hardware.missing.configured-on": ConfiguredIfaceParams;
        "hardware.missing.input-patches": DependentCountParams;
        "hardware.missing.no-patches": NoMessageParams;
        "hardware.missing.not-connected": NoMessageParams;
        "hardware.missing.output-routes": DependentCountParams;
        "hardware.missing.summary": MissingHardwareParams;
        "hardware.missing.surface": NoMessageParams;
        "input.foreign-link-removed.detail": ForeignLinkParams;
        "input.foreign-link-removed.title": ForeignLinkParams;
        "measurement.already-running": NoMessageParams;
        "measurement.engine-live": MeasurementBusyParams;
        "measurement.no-rates": NoMessageParams;
        "measurement.nothing-local": NoMessageParams;
        "output.app-stream-parked.detail": AppStreamParams;
        "output.app-stream-parked.title": AppStreamParams;
        "output.default-sink-foreign.detail": DefaultSinkForeignParams;
        "output.default-sink-foreign.title": DefaultSinkForeignParams;
        "output.foreign-link-removed.detail": ForeignLinkParams;
        "output.foreign-link-removed.title": ForeignLinkParams;
        "output.route-adopted.detail": RouteAdoptedParams;
        "output.route-adopted.title": RouteAdoptedParams;
        "output.route-healed.detail": RouteHealedParams;
        "output.route-healed.title": RouteHealedParams;
        "output.route-no-target.detail": RouteNoTargetParams;
        "output.route-no-target.title": RouteNoTargetParams;
        "output.route-restored.detail": RouteRestoredParams;
        "output.route-restored.title": RouteRestoredParams;
        "plugins.instances-exhausted": PluginInstancesParams;
        "record.already-running": NoMessageParams;
        "record.no-engine": NoMessageParams;
        "record.no-space": RecordSpaceParams;
        "record.nothing-armed": NoMessageParams;
        "record.rate-unknown": NoMessageParams;
        "record.vsc-active": NoMessageParams;
        "render.already-running": NoMessageParams;
        "render.no-engine": NoMessageParams;
        "render.no-space": RenderSpaceParams;
        "render.no-tracks": NoMessageParams;
        "render.playback": NoMessageParams;
        "render.recording": NoMessageParams;
        "reverse.no-tracks": NoMessageParams;
        "reverse.region-outside-take": NoMessageParams;
        "reverse.region-too-long": NoMessageParams;
        "reverse.reverb-off": NoMessageParams;
        "rt.budget": RtBudgetParams;
        "stagebox.model-table-used.detail": StageboxModelTableUsedParams;
        "stagebox.model-table-used.title": StageboxModelTableUsedParams;
        "undo.label.bpm": NoMessageParams;
        "undo.label.delay": ScopeLabelParams;
        "undo.label.drive": ScopeLabelParams;
        "undo.label.eq": ScopeLabelParams;
        "undo.label.gate": ScopeLabelParams;
        "undo.label.paste": PasteLabelParams;
        "undo.label.reverb": ScopeLabelParams;
        "undo.label.route": RouteLabelParams;
        "undo.label.send": RouteLabelParams;
        "undo.label.stripOrder": NoMessageParams;
        "vsc.no-engine": NoMessageParams;
        "vsc.no-such-take": NoMessageParams;
        "vsc.no-take": NoMessageParams;
        "vsc.no-track": NoMessageParams;
        "vsc.not-engaged": NoMessageParams;
        "vsc.rate-mismatch": VscRateParams;
        "vsc.recording": NoMessageParams;
        "vsc.take-unplayable": NoMessageParams;
        "xrun.growing.detail.raise": XrunRaiseParams;
        "xrun.growing.detail.raise-holder": XrunRaiseHolderParams;
        "xrun.growing.detail.relax": XrunRelaxParams;
        "xrun.growing.detail.unknown": XrunGraphParams;
        "xrun.growing.title": XrunRateParams;
        "xrun.node.detail": NodeXrunParams;
        "xrun.node.title": NodeXrunParams;
    }

    Every message code, mapped to the parameters its localised sentence interpolates.

    The wire codes in the first block are the ones already shipped; their spelling is a wire contract and must not be renamed (a renamed code silently degrades every older client to the raw code text).

    Type Declaration

    • Readonlyinvalid-message: NoMessageParams

      The request did not parse against the wire schema.

    • Readonlyno-stagebox-registry: NoMessageParams

      No persisted stagebox registry, so a rename has nothing to write to.

    • Readonlyno-state-dir: NoMessageParams

      No --state-dir/OPENMIXER_STATE_DIR, so nothing the operator sets can persist.

    • Readonlysip-disarmed: NoMessageParams

      Solo-in-place is locked; it must be unlocked in Setup first.

    • Readonlytakeover-unsupported: NoMessageParams

      This server cannot take the device graph over from whatever owns it.

      • Readonlychannel.order.drive-before-eq.detail: StageOrderParams
      • Readonlychannel.order.drive-before-eq.title: StageOrderParams

        Drive runs before the EQ — informational, the most defensible of the three.

      • Readonlychannel.order.gate-not-first.detail: StageOrderParams
      • Readonlychannel.order.gate-not-first.title: StageOrderParams

        The gate is not the first stage this strip walks.

      • Readonlychannel.order.tail-before-dynamics.detail: StageOrderParams
      • Readonlychannel.order.tail-before-dynamics.title: StageOrderParams

        A time-based tail (delay or reverb) runs before the gate or the compressor.

      • Readonlyclock.device-disabled.detail: DeviceDisabledParams
      • Readonlyclock.device-disabled.rate-detail: DeviceDisabledRateParams

        Same finding, rates known (amendment 2026-09-15) — the real reason, not the generic one.

      • Readonlyclock.device-disabled.title: DeviceDisabledParams

        An undeclared ALSA device the exclusivity policy has disabled.

      • Readonlyclock.device-row.rates-unknown: DeviceDisabledParams

        Same list row, rates not yet probed — absence, never a fabricated menu.

      • Readonlyclock.device-row.resampled: DeviceRowReasonParams

        Same list row, rates known but the graph rate is NOT among them — resampled either way; an ENABLED device reading this is the accepted-risk case, shown, never hidden.

      • Readonlyclock.device-row.synchronous: DeviceRowReasonParams

        /clock/devices list row reason (follow-up, 2026-09-15): this device's rates include the graph rate — it runs sample-synchronous, whichever way its enabled reads.

      • Readonlyclock.driver-ring-shallow.detail: DriverRingShallowParams
      • Readonlyclock.driver-ring-shallow.title: DriverRingShallowParams

        The driver ALSA ring's period-num is below the proven-safe minimum for the current quantum/rate (driver-ring-policy.ts).

      • Readonlyclock.follower-rate-mismatch.detail: FollowerRateMismatchParams
      • Readonlyclock.follower-rate-mismatch.title: FollowerRateMismatchParams

        A linked, running sink whose native rate set does not include the graph rate.

      • Readonlyclock.master-profile.detail: MasterProfileParams
      • Readonlyclock.master-profile.title: MasterProfileParams

        The declared clock master is NOT in the pro-audio profile (amendment 2026-09-15 §4) — the console needs every port of its clock reference, and a desktop sound panel's stereo profile publishes two. Informational: switching the profile drops the card's links, so it stays the operator's act.

      • Readonlyclock.no-owner.detail: NoMessageParams
      • Readonlyclock.no-owner.title: NoMessageParams

        openmixer is following and nothing on the segment was seen owning the pace.

      • Readonlyclock.synthetic-driver.detail: NoMessageParams
      • Readonlyclock.synthetic-driver.title: ClockDriverParams

        A software timer is driving the graph: audio runs, its timing means nothing.

      • Readonlyclock.two-owners.detail: ClockOwnerParams
      • Readonlyclock.two-owners.title: NoMessageParams

        openmixer owns the pace and so does something else — the classic click/dropout cause.

      • Readonlyclock.unqualified-master.title: NoMessageParams

        openmixer owns the pace off a reference that does not qualify for it.

      • Readonlydiscovery.blind.global: BlindGlobalParams

        A protocol's probe could not scan at all.

      • Readonlydiscovery.blind.link: BlindLinkParams

        A protocol's probe could not scan one named link.

      • Readonlydiscovery.reac.active-probe-failed: ProbeErrorParams

        The active probe threw on this link.

      • Readonlydiscovery.reac.active-probe-no-reason: NoMessageParams

        The active probe declined to run and gave no reason.

      • Readonlydiscovery.reac.link-busy: BusyLinkParams

        The link carries traffic, so it was deliberately NOT active-probed.

      • Readonlydiscovery.reac.nic-enumeration-failed: ProbeErrorParams

        The host's NIC list could not be read, so no link was looked at.

      • Readonlydiscovery.reac.not-listening-here: OtherScopesParams

        reac-pw is watching other NICs, so this one went unscanned.

      • Readonlydiscovery.reac.not-publishing: NoMessageParams

        No reac-playback node is publishing discovery on this host.

      • Readonlydiscovery.reac.passive-listen-failed: ProbeErrorParams

        The passive listen threw on this link.

      • Readonlydiscovery.reac.predates-discovery: NoMessageParams

        This reac-pw predates the discovery properties.

      • Readonlydiscovery.reac.registry-unloaded: NoMessageParams

        The native PipeWire registry is not loaded, so reac-pw's discovery cannot be read.

      • Readonlydiscovery.reac.stale: StaleProbeParams

        Every published sighting has aged out — the publisher appears wedged.

      • Readonlydiscovery.reac.unknown-state: UnknownProbeStateParams

        reac-pw reports a discovery state this build does not understand.

      • Readonlydiscovery.reac.unparseable: NoMessageParams

        reac-pw published discovery data that did not parse.

      • Readonlyexport.already-running: NoMessageParams

        One export at a time, for render.already-running's reason.

      • Readonlyexport.empty: NoMessageParams

        The MAIN capture holds no frames: an armed track whose source never made a sound.

      • Readonlyexport.no-engine: NoMessageParams

        The console has no take library, so nothing can be exported.

      • Readonlyexport.no-main: NoMessageParams

        The take carries no MAIN capture, and the print IS the main capture — there is nothing lesser to offer in its place.

      • Readonlyexport.no-space: RenderSpaceParams

        The print does not fit on the disk. Refused BEFORE the first sample, like a render's.

      • Readonlyexport.unreadable: NoMessageParams

        The MAIN capture cannot be read as a float WAV, so no print can be made from it.

      • Readonlyfeedback.loop.no-cuttable-edge: NoMessageParams

        The standing routing loop runs entirely through console structure — no operator patch lies on it, so there is nothing a break may cut without dismantling the desk.

      • Readonlyhardware.contradiction.channels: ContradictionCountParams

        The configured preamp count is not the count the box reports. The box wins.

      • Readonlyhardware.contradiction.model: ContradictionParams

        The configured box model is not the model the box reports. The box wins.

      • Readonlyhardware.contradiction.width: ContradictionCountParams

        The configured channel width is not the width the box reports. The box wins.

      • Readonlyhardware.missing.bridge-down: NoMessageParams

        The REAC bridge itself is down, so nothing could establish.

      • Readonlyhardware.missing.clause-separator: NoMessageParams

        What joins two clauses — keyed so a locale can punctuate its own way.

      • Readonlyhardware.missing.configured-on: ConfiguredIfaceParams

        The rig's own configuration expects this box on a named NIC.

      • Readonlyhardware.missing.input-patches: DependentCountParams

        Restored channel input patches feeding from the absent device.

      • Readonlyhardware.missing.no-patches: NoMessageParams

        The device is absent but nothing in the show is patched to it.

      • Readonlyhardware.missing.not-connected: NoMessageParams

        The bridge sees the box's node but the box has not established.

      • Readonlyhardware.missing.output-routes: DependentCountParams

        Restored bus output routes feeding to the absent device.

      • Readonlyhardware.missing.summary: MissingHardwareParams

        The whole "what depends on this absent device" line, built from the clauses below.

      • Readonlyhardware.missing.surface: NoMessageParams

        The absent device is a control surface.

      • Readonlyinput.foreign-link-removed.detail: ForeignLinkParams
      • Readonlyinput.foreign-link-removed.title: ForeignLinkParams

        A foreign link onto a console INPUT port, from an undeclared device, removed (§5b, amendment 2026-09-17) — the input-side twin of output.foreign-link-removed.

      • Readonlymeasurement.already-running: NoMessageParams

        A sweep is already in progress; a second one would fight it for the CPU.

      • Readonlymeasurement.engine-live: MeasurementBusyParams

        The engine is processing audio, so a CPU-heavy plugin sweep is refused.

      • Readonlymeasurement.no-rates: NoMessageParams

        Neither a live rate nor a supported-rate list is known, so nothing can be measured.

      • Readonlymeasurement.nothing-local: NoMessageParams

        Nothing has been measured on this machine, so there is nothing to discard.

      • Readonlyoutput.app-stream-parked.detail: AppStreamParams
      • Readonlyoutput.app-stream-parked.title: AppStreamParams

        Safe mode: a new app stream was patched NOWHERE, and is waiting in the patchbay.

      • Readonlyoutput.default-sink-foreign.detail: DefaultSinkForeignParams
      • Readonlyoutput.default-sink-foreign.title: DefaultSinkForeignParams

        The console asserted default.audio.sink at its parking sink and something else holds it (§6) — query-and-compare, so this says what disagrees rather than re-asserting blindly.

      • Readonlyoutput.foreign-link-removed.detail: ForeignLinkParams
      • Readonlyoutput.foreign-link-removed.title: ForeignLinkParams

        A foreign link onto a routed physical output, removed. Informational: the exclusive latch is on and this is what it did, named so a silent app is explainable.

      • Readonlyoutput.route-adopted.detail: RouteAdoptedParams
      • Readonlyoutput.route-adopted.title: RouteAdoptedParams

        A link the OPERATOR made by hand, taken into the bus's route row (§4). Never silent: the desk now states what they did, and the session will re-lay it.

      • Readonlyoutput.route-healed.detail: RouteHealedParams
      • Readonlyoutput.route-healed.title: RouteHealedParams

        A bus's destination stopped existing and the console re-routed it. Never silent: a heal is an act the console took on the operator's desk.

      • Readonlyoutput.route-no-target.detail: RouteNoTargetParams
      • Readonlyoutput.route-no-target.title: RouteNoTargetParams

        The destination is gone and nothing eligible exists to take it — the row stays unrouted and the next cycle tries again.

      • Readonlyoutput.route-restored.detail: RouteRestoredParams
      • Readonlyoutput.route-restored.title: RouteRestoredParams

        The card a bus was healed OFF came back and the row re-took it (§9g R2). Never silent, for the same reason a heal is not: the console moved the operator's mix.

      • Readonlyplugins.instances-exhausted: PluginInstancesParams

        Every mod-host instance id is spoken for, so no further plugin can be racked.

      • Readonlyrecord.already-running: NoMessageParams

        A take is already running; a second one would give a channel two rings and neither would hold the whole show.

      • Readonlyrecord.no-engine: NoMessageParams

        There is no audio engine to record from.

      • Readonlyrecord.no-space: RecordSpaceParams

        The disk cannot hold the take's first minutes, so starting would be a promise it cannot keep and the show would truncate at the worst moment.

      • Readonlyrecord.nothing-armed: NoMessageParams

        No channel would be captured — everything is opted out, or nothing is patched. Starting anyway produces a folder nobody can explain the next morning.

      • Readonlyrecord.rate-unknown: NoMessageParams

        The graph has not resolved a sample rate, so there is nothing honest to stamp the take with. A take carries the rate it was captured at (§5) and the NODE is the only thing that knows what that is; a file stamped with a default is one the desk will later refuse to play and cannot explain (2026-09-01).

      • Readonlyrecord.vsc-active: NoMessageParams

        A take is loaded for a virtual soundcheck, and record XOR playback holds on one graph (§3.5): capturing while a soundcheck replays would write yesterday's take back to disk under a new name, with nothing to tell the two apart.

      • Readonlyrender.already-running: NoMessageParams

        One render at a time: two at once would only halve each other's speed.

      • Readonlyrender.no-engine: NoMessageParams

        This build carries no offline render engine, so the console cannot render a take.

      • Readonlyrender.no-space: RenderSpaceParams

        A render writes a second copy of every selected track, and the disk cannot hold it. Refused BEFORE the first sample rather than halfway through a folder of half-files.

      • Readonlyrender.no-tracks: NoMessageParams

        Not one track of the take could be opened as a renderable file.

      • Readonlyrender.playback: NoMessageParams

        A virtual soundcheck is replaying, which is the desk in use.

      • Readonlyrender.recording: NoMessageParams

        A take is being CAPTURED. §0.5 puts rendering on a console that is idle after the show, and a capture is the one thing here that cannot be done again.

      • Readonlyreverse.no-tracks: NoMessageParams

        Not one selected track of the take could be opened as a renderable file.

      • Readonlyreverse.region-outside-take: NoMessageParams

        The region names frames the take does not carry — including an empty one. A render that quietly moved the boundary to what fits would answer a question nobody asked.

      • Readonlyreverse.region-too-long: NoMessageParams

        The mirror reads the region BACKWARDS, so the region is held in memory and the binding declares how much of it it will hold. Refused at the ceiling, never clamped to it.

      • Readonlyreverse.reverb-off: NoMessageParams

        The reverb this render was asked to use is OFF. The render would then be a copy of the source under a new name, which is the worst answer an operation can land.

      • Readonlyrt.budget: RtBudgetParams

        The engine's measured share of its real-time budget.

      • Readonlystagebox.model-table-used.detail: StageboxModelTableUsedParams
      • Readonlystagebox.model-table-used.title: StageboxModelTableUsedParams

        A DECLARED box (bound, but not on the wire right now) is publishing its width/geometry from the closed model table rather than a live device — the wire-over-table law's own admission that it has nothing better right now.

      • Readonlyundo.label.bpm: NoMessageParams

        The desk tempo.

      • Readonlyundo.label.delay: ScopeLabelParams

        A strip's delay.

      • Readonlyundo.label.drive: ScopeLabelParams

        A strip's drive stage.

      • Readonlyundo.label.eq: ScopeLabelParams

        A channel's EQ.

      • Readonlyundo.label.gate: ScopeLabelParams

        A strip's gate.

      • Readonlyundo.label.paste: PasteLabelParams

        A clipboard paste onto one or more channels (#57) — count is how many it landed on.

      • Readonlyundo.label.reverb: ScopeLabelParams

        A strip's reverb.

      • Readonlyundo.label.route: RouteLabelParams

        A route toggled between two scopes.

      • Readonlyundo.label.send: RouteLabelParams

        A send's level or tap — from is the source strip, to the destination bus.

      • Readonlyundo.label.stripOrder: NoMessageParams

        The desk's strip order — the /channel roster reordered (console-wide, no strip scope).

      • Readonlyvsc.no-engine: NoMessageParams

        There is no audio engine to play a take through.

      • Readonlyvsc.no-such-take: NoMessageParams

        The take id names nothing in the take library.

      • Readonlyvsc.no-take: NoMessageParams

        No take is loaded, so there is nothing for a channel to listen to.

      • Readonlyvsc.no-track: NoMessageParams

        The take carries no track for this channel, so it stays on its live input — a soundcheck never replays silence over a microphone that is working (§3.2).

      • Readonlyvsc.not-engaged: NoMessageParams

        Play means hear it (§3.4): the write would run the transport with no channel listening to the take, so it is refused. Engage in the same write, or check the take can serve these channels.

      • Readonlyvsc.rate-mismatch: VscRateParams

        The take was captured at one rate and the graph runs at another. There is no resampler on the playback path by design (§5), so it would play at the wrong pitch and the wrong length: match the clock or re-record.

      • Readonlyvsc.recording: NoMessageParams

        A take is being RECORDED, and record XOR playback holds on one graph (§3.5).

      • Readonlyvsc.take-unplayable: NoMessageParams

        The take is there and its audio is not playable — a missing, truncated or re-encoded track file. A soundcheck missing one channel is worse than one that did not start, because nothing about it looks wrong.

      • Readonlyxrun.growing.detail.raise: XrunRaiseParams

        Room to raise the quantum; no node's request explains the current one.

      • Readonlyxrun.growing.detail.raise-holder: XrunRaiseHolderParams

        Room to raise the quantum, AND a node's request explains the current one.

      • Readonlyxrun.growing.detail.relax: XrunRelaxParams

        No room left to raise (at the ceiling); a node's request explains the current quantum.

      • Readonlyxrun.growing.detail.unknown: XrunGraphParams

        No room left to raise, and no node's request explains the current quantum either.

      • Readonlyxrun.growing.title: XrunRateParams

        Xruns are landing now (a delta since the previous observation, never the running total).

      • Readonlyxrun.node.detail: NodeXrunParams
      • Readonlyxrun.node.title: NodeXrunParams

        One node's own xrun counter is moving — not the graph aggregate above.