openmixer — generated API reference
    Preparing search index...

    Interface ConsoleRowFeed

    Watch the console's rows in process.

    The listener is called SYNCHRONOUSLY with the full snapshot before watch returns — one call per live instance — and thereafter once per committed change. A consumer therefore has a populated board the moment it has subscribed, with no greeting to wait for and no window in which it is connected but blank.

    paths is the consumer naming the row TEMPLATES it consumes. It is not an optimisation of the listener's inbox — watching IS demand, so a path admitted here holds that row's pump running, and a path left out releases it. A surface that reads nine rows and asked for all eighty-five was therefore keeping the analyser poll alive with nobody looking at a trace: the console armed every operator-engaged lane at 10 Hz because a control surface was plugged in.

    Omitted means EVERY row, which is what a consumer that genuinely mirrors the whole console wants — and what every consumer got before the parameter existed.

    What a consumer displays through a PUMP it names in the same window: a desk whose rings paint the meters names /meters and is owed the whole frame, exactly as a windowed GET /api/?watch=1&paths=/meters is (h2 spec, amendment 2026-09-02, E1). Watching IS the demand — there is no second declaration, in process or on the wire.

    the row templates this consumer reads (/channel/{kind}/{index}/fader); omit for all of them

    the open watch

    interface ConsoleRowFeed {
        watch(
            listener: ConsoleRowListener,
            paths?: readonly string[],
        ): ConsoleWatch;
    }
    Index