openmixer — generated API reference
    Preparing search index...

    Interface DetectThresholds

    The full detector contract — every gate PersistenceTracker.push confirms on, promoted here from the module consts so a per-channel sensitivity can relax them (via thresholdsFor) without touching the corpus-tuned SAFE DEFAULT (DEFAULT_THRESHOLDS, built byte-for-byte from those consts). The first four are the historical instantaneous/persistence bar; the growth/sub-clean gates below were module consts until the FBS made detection operator-tunable. dB fields are in dB; frame fields are counts.

    interface DetectThresholds {
        deepPlateauFloorDb?: number;
        growthConfirmFrames: number;
        growthMaxDipDb: number;
        growthMaxSingleFrameShare: number;
        growthMinDbPerFrame: number;
        growthMinTotalRiseDb: number;
        paprDb: number;
        persistFrames: number;
        phprDb: number;
        plateauFloorDb?: number;
        pnprDb: number;
        pshrMinDb: number;
        subCleanFrames: number;
        trendMinRiseDb?: number;
    }
    Index
    deepPlateauFloorDb?: number

    The DEEP plateau tier's floor — deeper than the corpus-silent shallow floor, bought with TIME instead of level: the bin must hold DEEP_PLATEAU_FRAMES frames (~2 s) dip-free AND pshr-clean at this level. Feedback holds rock-steady for seconds; a played note decays, wavers or moves. Measured basis (rig, 2026-08-19): a hard ring's plateau sat at −25…−36 dBFS while the corpus-silent shallow floor bottoms at −24.

    growthConfirmFrames: number

    Consecutive isGrowing frames required before the ramp route confirms (was GROWTH_CONFIRM_FRAMES).

    growthMaxDipDb: number

    isGrowing's per-hop dip allowance, also the plateau route's no-decay bar (was GROWTH_MAX_DIP_DB).

    growthMaxSingleFrameShare: number

    isGrowing's single-frame-share cap — the #106 attack rejector (was GROWTH_MAX_SINGLE_FRAME_SHARE).

    growthMinDbPerFrame: number

    isGrowing's least-squares slope bar (was GROWTH_MIN_DB_PER_FRAME).

    growthMinTotalRiseDb: number

    isGrowing's end-to-end rise bar (was GROWTH_MIN_TOTAL_RISE_DB).

    paprDb: number
    persistFrames: number
    phprDb: number
    plateauFloorDb?: number

    #140 SATURATED-PLATEAU route floor (dBFS-ish). undefined ⇒ the route is OFF and push takes only the ramp path (today's behaviour). Set > 0 sensitivity only.

    pnprDb: number
    pshrMinDb: number

    The #116 sub-harmonic dB bar (was PSHR_MIN_DB) — PINNED in the LIVE pool at every sensitivity, the lone gate subCleanFrames shortens the streak of but never lowers.

    subCleanFrames: number

    Consecutive sub-harmonic-CLEAN frames required (was the literal GROWTH_WINDOW_FRAMES streak in push). The pshr BAR itself is pshrMinDb; only this required streak COUNT shortens with sensitivity.

    trendMinRiseDb?: number

    TREND route (opt-in, armed at s > 0 like the plateau tiers): a candidate whose dB history CLIMBS this much end-to-end across the deep window (~2 s), every hop within the dip allowance and pshr-clean throughout, is a run-away confirmed DURING growth — however slow. The ramp route needs growthMinTotalRiseDb inside 5 frames (~12 dB/s at s=1 live); a near-threshold ring regenerates far slower and used to reach the plateau floors before anything fired (measured 2026-08-19: 48 frames candidate-clean before the deep tier finally confirmed at −26 dBFS). Music that climbs steadily for 2 s while lone-tone-clean on every gate is a crescendo of a pure held note — the FP corpus bounds the bar.