@audio/defeedback-tracker
v1.0.1
Published
Howl trajectory tracking — persistence + stability + narrowness gates; music discriminator
Downloads
347
Readme
@audio/defeedback-tracker

Howl trajectory tracking — persistence + stability + narrowness gating; the music discriminator
npm install @audio/defeedback-trackerimport 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
