openmixer — generated API reference
    Preparing search index...

    Type Alias EngineEvent

    EngineEvent:
        | { kind: "connected"; topology: MixerTopology }
        | { kind: "disconnected"; reason: string }
        | { channel: ChannelId; kind: "fader"; level: FaderLevel }
        | { channel: ChannelId; kind: "mute"; muted: boolean }
        | { channel: ChannelId; kind: "solo"; soloed: boolean }
        | { channel: ChannelId; kind: "soloSafe"; safe: boolean }
        | { kind: "cueMode"; mode: "pfl" | "afl" | "sip" }
        | { kind: "monitorOutput"; output?: ChannelId; takeover?: boolean }
        | { kind: "monitorLevel"; level: number }
        | { dim: boolean; kind: "monitorDim" }
        | { kind: "soloClear" }
        | { channel: ChannelId; kind: "pan"; pan: number }
        | { format: BusFormat; kind: "mainFormat" }
        | { channel: ChannelId; gain: GainLevel; kind: "gain" }
        | { channel: ChannelId; db: number; kind: "trim" }
        | { channel: ChannelId; kind: "phantom"; on: boolean }
        | { channel: ChannelId; kind: "pad"; on: boolean }
        | { channel: ChannelId; gainDb: number; kind: "headAmpGain" }
        | { channel: ChannelId; inverted: boolean; kind: "polarity" }
        | { channel: ChannelId; delayMs: number; kind: "align"; reference: string }
        | { channel: ChannelId; colour: string; kind: "colour" }
        | { channel: ChannelId; instrument: string | null; kind: "instrument" }
        | { channel: ChannelId; kind: "name"; name: string | null }
        | { channel: ChannelId; kind: "selection" }
        | { channel: ChannelId; clipped: boolean; kind: "clip" }
        | {
            channel: ChannelId;
            kind: "refused";
            param: SurfaceWriteFact;
            reason?: string;
            refusal?: Refusal;
        }
        | {
            kind: "meters";
            levels: ReadonlyArray<{ channel: ChannelId; level: MeterLevel }>;
            loudness?: LoudnessReadout;
        }

    Type Declaration

    • { kind: "connected"; topology: MixerTopology }
    • { kind: "disconnected"; reason: string }
    • { channel: ChannelId; kind: "fader"; level: FaderLevel }
    • { channel: ChannelId; kind: "mute"; muted: boolean }
    • { channel: ChannelId; kind: "solo"; soloed: boolean }
    • { channel: ChannelId; kind: "soloSafe"; safe: boolean }
    • { kind: "cueMode"; mode: "pfl" | "afl" | "sip" }
    • { kind: "monitorOutput"; output?: ChannelId; takeover?: boolean }
    • { kind: "monitorLevel"; level: number }
    • { dim: boolean; kind: "monitorDim" }
    • { kind: "soloClear" }
    • { channel: ChannelId; kind: "pan"; pan: number }
    • { format: BusFormat; kind: "mainFormat" }

      MAIN's discrete-channel format changed — the console-wide fact behind SurfaceHost.mainFormat (2026-09-08-lcr-mains.md §4/§8). No channel: phase 1 scopes the whole fact to MAIN alone, so there is nothing to disambiguate.

    • { channel: ChannelId; gain: GainLevel; kind: "gain" }
    • { channel: ChannelId; db: number; kind: "trim" }
    • { channel: ChannelId; kind: "phantom"; on: boolean }
    • { channel: ChannelId; kind: "pad"; on: boolean }
    • { channel: ChannelId; gainDb: number; kind: "headAmpGain" }
    • { channel: ChannelId; inverted: boolean; kind: "polarity" }
    • { channel: ChannelId; delayMs: number; kind: "align"; reference: string }
    • { channel: ChannelId; colour: string; kind: "colour" }
    • { channel: ChannelId; instrument: string | null; kind: "instrument" }
    • { channel: ChannelId; kind: "name"; name: string | null }
    • { channel: ChannelId; kind: "selection" }
    • { channel: ChannelId; clipped: boolean; kind: "clip" }

      The clip LATCH changed — an internal spec. ENGINE-CAPTURED, never a surface write: a surface that shows this fact only reflects it, the same as mute/solo above, and clears it only by PATCHing the row { clipped: false }.

    • {
          channel: ChannelId;
          kind: "refused";
          param: SurfaceWriteFact;
          reason?: string;
          refusal?: Refusal;
      }

      A write THIS client made was refused by the row that owns the fact — fanned out by a SurfaceHost whose write door answers (SurfaceEntityWrites), never by the engine, which refuses nothing after the fact.

      It exists because silence is not an answer for HARDWARE. A motor fader the operator moved stays where the hand left it, so a refused move leaves the surface showing a value the desk never took, with no frame coming to correct it. On this event a surface repaints the fact from SERVED truth — the same repaint an accepted write gets from its broadcast, so there is one path and one source of truth, and no client-side mirror anywhere.

      • channel: ChannelId
      • kind: "refused"
      • param: SurfaceWriteFact
      • Optionalreason?: string

        Log-edge prose where the door had nothing coded — never operator-facing text.

      • Optionalrefusal?: Refusal
    • {
          kind: "meters";
          levels: ReadonlyArray<{ channel: ChannelId; level: MeterLevel }>;
          loudness?: LoudnessReadout;
      }