- log2_ln.hpp/cpp: Plugin's exact ln(float) polynomial from 535a70
(0x1802a24c0). IEEE 754 bit extraction + Horner evaluation.
Coefficients extracted from binary at 0x181f81f80..0x181f821c0.
Max error ~3e-6 for typical inputs.
- spectral.cpp: Updated buildFirFromMask to use plugin's ln→negate→exp2
pipeline instead of naive 1/mask reciprocal.
- exp2_tables.hpp/cpp: Already contains plugin's exp2 tables (0x26b820).
Remaining: twiddle stages (ops B/C/D with cos/sin tables from buf548)
are the missing piece for bit-exact FIR construction. These are
FFT butterflies already implemented in fft.hpp but need integration
into the FIR pipeline.
Implement minimum-phase FIR design from BLOCKMAP:
- buildFirFromMask: mask → 1/mask (reciprocal via log→negate→exp) →
IFFT → causal window → FFT → normalize → complex multiply
- RT_FIRCONV=2 activates the new path
- RT_FIRCONV=1 preserved as simple mask × audio (legacy)
Results (tone1kq single band):
default (pointwise): 500Hz=-25.35 dB, 1kHz=-50.60 dB
FIRCONV=1 (mask mul): 500Hz=-1.31 dB, 1kHz=-25.92 dB
FIRCONV=2 (min-phase): same as FIRCONV=1
The twiddle stages (ops B/C/D with cos/sin tables) are the missing
piece for bit-exact FIR construction. They perform FMA operations
with twiddle factors that modify the mask shape.
Note: dual_b1q_0.5.wav reference is empty (0 bytes) — corpus can't run.
Needs regeneration.
- th_b3c0 (0x18000b3c0) = pure complex multiply FIR × audio in freq-domain
- scan3.py: pre-scan approach finds ctx in 1.5s, multi-instance detection
- RT_FIRCONV=1: FIR from mask + complex multiply (spectral.cpp)
- RT_FIRPOWER=1: power-law mask from raw spectrum (framed_model.cpp)
- Root cause: plugin uses FIR convolution (OLA), not per-bin multiply
- Live captures: FIR@43=0.524, mask@43=0.510, final gain=0.305
- Best result: RT_LUT_OFF gives cut@500=-8.18 dB (ref -10.32)
- NOTES_LEVEL 24e/24f/24g appended
- Fixed execute_inverse: removed conj bug, now uses positive twiddle only
- Added WOLA normalization factor (wola_sum/hop_ for Hann+hop=N/4)
- New detector model: floor(level) + bell_curve * boost, calibrated from
measured data (summary.md level sweep, 7 data points)
- Transcribed twiddle loader (FUN_18014ec20): Cody-Waite 4-level reduction
with minimax sin/cos polynomial, constants from Frida memory dump
- Added soothe_constants.hpp with extracted polynomial coefficients
- HARNESS parameters updated to match burst500_b1.rpp (depth=0.864)
Results: burst500.wav reduction now -5.8 dB vs Ref -6.8 dB (was -14.4 dB)