Matiq
13c2d028bf
22w: faithful mask-shaping chain v1 behind RT_FAITHFUL (fnfaith.cpp) — exact 180533340 freq-warped bidir-IIR coefficients (fc_bin=85@48k/4096, constants from dump); corpus TOTAL 5.315 but comb 2.57 best-ever; decisive: mask shape cannot balance dual tones -> level contrast is created by the DETECTOR (time-domain twin bank hypothesis priority #1 )
2026-08-23 17:04:23 +03:00
Matiq
6924e539e0
feat(dsp): render48k pipeline + structural chain on 48000/4096 grid
...
- 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)
2026-08-21 04:46:51 +03:00
Matiq
7bf5a4a80c
feat(dsp): structural FUN_180529fe0 chain components + fn529fe0_check (step 1, module 1)
2026-08-21 01:09:36 +03:00
Matiq
d802ee7aed
P5: F5b — exp2 0x26b820 assets extracted bit-exact + numeric fallback exp2_dsp
...
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).
2026-08-20 21:07:30 +03:00
Matiq
d4a0a68584
P4: transcribe exact FUN_180529fe0 mask chain (structural, not yet calibrated)
...
framed_model.cpp now follows the decoded mono-path structure:
level -> scale(0x540870*0x54088c/0x1a0) -> IIR1 leaky(A1/B1) -> IIR2(A2/B2)
-> exp2(0.5*(mask-blend)) -> combine/acc -> warp -> IIR3(A3/B3)x2 -> dry/wet
IIR stages are the real live tables (iir_leaky y=A*acc+B*x, B=1-A). Removed the
empirical mask_lut=(1/(1+K*acc))^n. Not numerically calibrated yet: exp2 bigkernel
exact semantics + PRNG prologue (fVar30) + FFT-conv still TBD; t1kq depth -2.9 vs
-14.98 dB ref.
2026-08-20 15:10:29 +03:00
Matiq
fc48a9fee4
P4: real mask chain in FramedDetector (level-tracker + accumulator + live-calibrated LUT), t1kq err 0.5dB
...
Replace empirical PCHIP detector with live-calibrated mask chain from FUN_180529fe0:
level = am*res*scale; track += w*(level-track) (per-bin attack/release weights
extracted from RT snapshot, rt_weights.hpp); acc = (level-track)+level; mask =
(1/(1+K*acc))^n (K=9.8026 n=0.25966 fitted to live mask band0). min-combine.
Results (N=2048 hop=512): t1kq single-band err +0.51 dB (-14.47 vs -14.98 dB ref);
comb 4-band per-tone -3.4..+5.8 dB (old PCHIP over-cut comb ~6 dB). Adds framed_test
harness for C++ FramedDetector eval on tone1kq/comb.
2026-08-20 13:11:27 +03:00
Matiq
0cdc57972c
P4: port framed_render.py model to C++ (FramedDetector: twin-res -> level -> Pchip LUT -> warp -> res^rp gain), replace empirical Detector; tt_base 49.93%->61.45% (single-band); multi-band refs still 100% (model is single-band)
2026-08-20 10:31:43 +03:00
Matiq
feb44c3802
P3.4: transcribe plugin's own vectorized ln(x) (vlog.cpp, minimax ln(1+x) poly + ln2 range-reduction); correct prior misread — dispatch reaches runtime ln, not FFT; vlog_check ALL OK (rel 2.4e-7)
2026-08-20 07:12:56 +03:00
Matiq
d3db772121
P2.5: decode twin-mask factory (FUN_18056e3e0 = constant fill 2π/(count·SR)) + band LUT apply (FUN_180563a60: level->gain t^γ/power-law); implement in levelpath.cpp, levelpath_check ALL OK
2026-08-20 01:23:22 +03:00
Matiq
433a0026e6
P2: level-tracker UPDATE-loop located (inline bidirectional IIR in FUN_180529fe0), structural module leveltrack (iir_first_order/bidirectional/unrolled4); scalar==unrolled verified; remaining = live A[] coeffs
2026-08-19 23:53:01 +03:00
Matiq
8b8895f68a
P1.3: integrate FFT-conv stage (build_fir_from_window step5 memcpy + fir_from_mask + overlap-save conv) with captured WIN_WINDOW; fftconv_check confirms FIR=window[2048:4096]={0.8->1.0}
2026-08-19 23:25:21 +03:00
Matiq
fd9b1fd001
P1.1: embed runtime-captured DSP tables (WIN_WINDOW, FREQAXIS@48k, WA/WB/WC/WD), dsp_ctx registry mirror, tables_check ALL OK
2026-08-19 22:48:32 +03:00
Matiq
58164f2952
P0: fix build (levelpath in CMake, FLOOR_LIN, exact LUT curve formulas), robust RPP param decoder (607 rpp ok), preserve f_52b570/f529fe0 disasms
2026-08-19 21:54:26 +03:00
Matiq
111d47530e
dsp: freqpath - warp 0x5406a8 = 0.87*x/(1+x/K) (K=exp(2.0723), x=f/2000) из FUN_180530850 (0x530900) + self-check (rel err 1.5e-07, PASS)
2026-08-18 17:08:42 +03:00
Matiq
0a4c0c959b
dsp: CMake - twin.cpp/phase_table.cpp в либу, executables harness+twin_check, фикс путей dsp/
2026-08-18 16:58:00 +03:00
Matiq
7dcbcf49b4
dsp/: C++ skeleton with working FFT/WOLA STFT
...
- Cooley-Tukey radix-2 FFT (forward + inverse with /N normalization)
- WOLA STFT/ISTFT with Hann window (nfft=2048, hop=512)
- WAV16 read + WAV24 write (fixed aliasing bug in read)
- Fixed in-place processing bug (separate input/output buffers)
- Biquad filter (peak/shelf/reject)
- Peak detector skeleton
- MS encode/decode (M8 stereo)
- Harness: WAV16 → STFT → WAV24 passthrough verified non-zero output
Verified: burst500.wav passthrough produces output RMS=0.0678
2026-08-17 11:25:35 +03:00