- 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.
- render48k: resample 44100→48000, process via SpectralProcessor(4096,1024,48000),
resample 44100, write 24-bit stereo WAV
- FramedDetector: structural chain (fn529fe0 sequence) runs on 48000/4096 grid,
bridge path unchanged for 44100/2048
- Structural chain: scale→IIR1→copy→IIR2→mirror→blend→exp2→combine→warp→dry/wet
using live tables (kIIR_A1/B1, kIIR_A2/B2, kBand768, kWarp, kRTAtt/kRTRel)
- Bridge baseline intact (0.000 dB degradation)
- 48k tone test: -20.73 dB vs ref -27.23 dB (6.5 dB error, scale factor not yet
calibrated to match bridge domain)
Extracted the 8x16 irrational tables + lead-in -708.4xx series from soothe_mem.bin
into exp2_tables.{hpp,cpp} (P3 bit-exact inputs). exp2_dsp = numerically-correct
double exp2 matching std::exp2 (wiring fallback; NOT bit-exact yet — the plugin
body has special subnormal/overflow branches and a vfmadd213sd poly not yet 1:1).
exp2_check: 2e6-grid PASS (0 cells >1e-13).