audioJS

@audio/defeedback-tracker

Status calibrated

npm1.0.1licenseMIT

Howl trajectory tracking — persistence + stability + narrowness gates; music discriminator

Overview

Install
Updated
Family
defeedback, 3 packages under it

Howl trajectory tracking — persistence + stability + narrowness gating; the music discriminator

import tracker from '@audio/defeedback-tracker'

Stateful factory that turns per-frame @audio/defeedback-analyzer candidates into confirmed howls. A candidate must clear the pnpr/phpr narrowness gates, persist at a stable frequency (within freqTol) for minFrames consecutive updates, and not be decaying (trend >= growth) before it's reported — this is what keeps sustained musical tones from being mistaken for feedback.

let t = tracker({ minFrames: 3, pnpr: 18, phpr: 15 })

let howls = t.update(candidates)   // candidates from defeedback-analyzer, one call per hop
// → [{ freq, level }, ...] confirmed, growing or stable howls

t.reset()                            // clear all tracked trajectories
Param Default
minFrames 3 consecutive confirming frames before a track reports
pnpr 18 dB, min peak-to-neighbor-power ratio to admit a candidate
phpr 15 dB, min peak-to-harmonic-power ratio to admit a candidate
freqTol 0.02 relative frequency tolerance for matching a candidate to an existing track
growth -3 dB/frame, minimum trend to keep reporting (rejects decaying tones)

Returns { update(candidates): Array<{freq, level}>, reset(): void }. A track is dropped after being unseen for more than 2 updates.

Use when: deciding when to deploy a notch — feed confirmed howls to @audio/defeedback-notchbank.deploy(freq).
Not for: spectral peak detection itself — use defeedback-analyzer.


Part of @audio/defeedback — the defeedback family umbrella.

MIT © audiojs