code wiki / _hdl_build / nx_aec_dtd_gate.nx

nx_aec_dtd_gate.nx

buildroot/runtime/_hdl_build/nx_aec_dtd_gate.nx

4484 B68 linesdepth 3pulls 4 transitivereach 0 importersview sourcekind gate/prooftopic aec
docsdependenciesstructsconstsfunctions

about

nx_aec_dtd_gate.nx -- proves the Geigel DOUBLE-TALK DETECTOR (aec_run_dtd) beats plain NLMS during double-talk. MEASURED head-to-head: same FAST step (mu~0.75, the one that diverged in nx_aec_gate test 2), same realistic signal (far-end talks ALONE first so the filter converges, THEN near-end joins = double-talk). The DTD freezes adaptation while the near-end speaks, so the converged filter is preserved; plain NLMS mis-adapts and lets echo leak through.

dependencies 3 imports · 0 importers

nx_syscalls.nx nx_gate_emit_lib.nx nx_aec.nx nx_aec_dtd_gate.nx

imports: nx_syscalls.nxnx_gate_emit_lib.nxnx_aec.nx

imported by: nobody (leaf or entry point)

call flow from main pre-order; caps 40 nodes / depth 6 declared; ↻ = already shown

main g_puts sys_write sys_mmap energy aec_run resid_echo aec_run_dtd g_pn sys_mmap ↻ sys_write ↻ g_check g_puts ↻ sys_exit

structs

none

consts

none

functions

9func energy(arr: *i64, from: i64, to: i64) -> i64 { var s: i64=0; var i: i64=from; while i<to { s = s + arr[i]*arr[i]; i=i+1 } return s }
called by 1: main
11func resid_echo(out: *i64, near: *i64, from: i64, to: i64) -> i64
called by 1: main
15func main() -> i64