Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 11 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,13 @@ Early scaffold. Two objects so far:
`shadow_ratio_db` is the main filter's residual power over the shadow
comparator's (see `shadow`): below 0 dB while the long filter out-cancels
the short fast one, rising toward and past 0 dB when the path moves; it
reads 0 dB with `@shadow 0`. Without the guard the external applies **no
reads 0 dB with `@shadow 0`. The same outlet sends **`watchdog n`**
whenever MuTap's NaN watchdog trips (`include/mutap/watchdog.h`): a NaN or
infinity that reached the canceller — a divide by zero in the patch, a
disconnected inlet — resets it as `reset` does, sends the guard back to
ARMING, comes out as one block of silence, and counts; `n` is the count
since the engine was built (the canceller's trips plus the guard's), sent
only when it moves, so a healthy patch never hears it. Without the guard the external applies **no
thresholds** — that is the patch's policy; MuTap's `pem_afc.h` and `fd_kalman.h` record
what each statistic was measured to catch and miss, and the help patcher
carries an example policy with its calibration conditions. Creation arg:
Expand Down Expand Up @@ -150,6 +156,10 @@ Early scaffold. Two objects so far:
in the MuTap test suite (`tests/test_aec.cpp`: at 0 dB double-talk the
naive update is kicked past useless while the Kalman core holds a deep
estimate with ~13 dB echo suppression through the segment, config-free).
Its right outlet (the IPC, or the echo-explained fraction with a
post-filter) also sends **`watchdog n`** whenever MuTap's NaN watchdog
trips, as `mutap.afc~`'s does: the engine resets, outputs one block of
silence, and `n` counts since it was built.
`@postfilter 1` engages the full measured **AEC chain** — the raw Kalman
canceller plus MuTap's coherence-driven residual suppressor, comfort
noise matched to the room's noise floor, and the initial receive guard:
Expand Down
2 changes: 1 addition & 1 deletion docs/mutap.aec~.maxref.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<c74object name='mutap.aec~' category='audio, adaptive, echo, cleaning'>

<digest>Acoustic echo canceller</digest>
<description>Acoustic echo canceller. Subtracts an adaptive estimate of the loudspeaker-to-microphone echo path from the microphone signal — the open-loop cousin of mutap.afc~, for the case where a clean far-end reference exists. Adaptation runs on a PEM-prewhitened signal pair, so it survives double-talk without a double-talk detector (FDAF-PEM, MuTap pem_afc). Inlet 1 takes the microphone, inlet 2 the far-end signal feeding the loudspeaker; the cleaned output is delayed by @block samples. The right outlet reports the IPC double-talk indicator (0..1). @warp selects the frequency-warped near-end model for music/tonal sources; @kalman selects the frequency-domain Kalman engine (v2), the measured double-talk winner. @postfilter selects the residual-echo post-filter engine: 1 engages the full measured AEC chain — raw Kalman canceller, coherence-driven residual suppressor, comfort noise, initial receive guard — the configuration MuTap's ITU-T compliance battery certifies; 2 swaps the suppressor for a small trained network (see @model). </description>
<description>Acoustic echo canceller. Subtracts an adaptive estimate of the loudspeaker-to-microphone echo path from the microphone signal — the open-loop cousin of mutap.afc~, for the case where a clean far-end reference exists. Adaptation runs on a PEM-prewhitened signal pair, so it survives double-talk without a double-talk detector (FDAF-PEM, MuTap pem_afc). Inlet 1 takes the microphone, inlet 2 the far-end signal feeding the loudspeaker; the cleaned output is delayed by @block samples. The right outlet reports the IPC double-talk indicator (0..1), and 'watchdog n' whenever a NaN or infinity reached the canceller (it resets and outputs one block of silence; n counts since the last rebuild). @warp selects the frequency-warped near-end model for music/tonal sources; @kalman selects the frequency-domain Kalman engine (v2), the measured double-talk winner. @postfilter selects the residual-echo post-filter engine: 1 engages the full measured AEC chain — raw Kalman canceller, coherence-driven residual suppressor, comfort noise, initial receive guard — the configuration MuTap's ITU-T compliance battery certifies; 2 swaps the suppressor for a small trained network (see @model). </description>


<!--METADATA-->
Expand Down
2 changes: 1 addition & 1 deletion docs/mutap.afc~.maxref.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<c74object name='mutap.afc~' category='audio, adaptive, feedback, howling, cleaning'>

<digest>Acoustic feedback (howling) canceller</digest>
<description>Acoustic feedback (howling) canceller. Subtracts an adaptive estimate of the loudspeaker-to-microphone feedback path from the microphone signal, adapted with PEM prewhitening so the closed loop does not bias the estimate (FDAF-PEM-AFROW, MuTap pem_afc). Inlet 1 takes the microphone, inlet 2 the signal feeding the loudspeaker; the cleaned output is delayed by @block samples. The second outlet carries the guard's post-reverb gain (1 with the guard off); the third reports the IPC double-talk indicator (0..1); the right outlet reports two raw convergence statistics in dB (uncertainty_db shadow_ratio_db), plus the guard's state with @guard on. @warp selects the frequency-warped near-end model for music/tonal sources; @kalman selects the frequency-domain Kalman engine (v2); @shadow sizes the shadow comparator; @guard adds the anti-howl safety layer (MuTap howl_guard: arming, duck, re-arm, back-off, soundcheck calibration, cap). </description>
<description>Acoustic feedback (howling) canceller. Subtracts an adaptive estimate of the loudspeaker-to-microphone feedback path from the microphone signal, adapted with PEM prewhitening so the closed loop does not bias the estimate (FDAF-PEM-AFROW, MuTap pem_afc). Inlet 1 takes the microphone, inlet 2 the signal feeding the loudspeaker; the cleaned output is delayed by @block samples. The second outlet carries the guard's post-reverb gain (1 with the guard off); the third reports the IPC double-talk indicator (0..1); the right outlet reports two raw convergence statistics in dB (uncertainty_db shadow_ratio_db), plus the guard's state with @guard on, and 'watchdog n' whenever a NaN or infinity reached the canceller (it resets and outputs one block of silence; n counts since the last rebuild). @warp selects the frequency-warped near-end model for music/tonal sources; @kalman selects the frequency-domain Kalman engine (v2); @shadow sizes the shadow comparator; @guard adds the anti-howl safety layer (MuTap howl_guard: arming, duck, re-arm, back-off, soundcheck calibration, cap). </description>


<!--METADATA-->
Expand Down
Loading
Loading