Compare commits

..
3 Commits
Author SHA1 Message Date
Matiq 8e4e40b25a docs: NOTES — Pchip LUT fix + comb diagnosis (level-dependent, not multiband) 2026-08-21 00:34:18 +03:00
Matiq e5e9700333 fix: restore pchip LUT in framed_model (revert 12094f8 regression)
12094f8 replaced the empirical Pchip LUT with the parametric
linear form (CAP_A_LEVEL=-24/B=28/gamma=1). With gamma=1 the
parametric form reduces to identity on xv=log10(am/res), which
breaks the whole mask chain (t1kq fc-scan err jumps to ~7.9 dB).

Re-instating lut_pchip restores the honest baseline:
t1kq mean|err| 0.226 dB (was 7.9). Confirms NOTES_LEVEL F1
closure: no parametric LUT set beats Pchip at fixed bridge
params; the structural A/B/gamma (level-path ctx+0x188) is the
only real path to bytes, not this parametric substitution.
2026-08-21 00:32:39 +03:00
Matiq 12094f8119 Replace empirical Pchip LUT with parametric form from live DSP capture 2026-08-20 23:08:04 +03:00
2 changed files with 23 additions and 11 deletions
-11
View File
@@ -22,17 +22,6 @@ constexpr float SENS_SCALE = 2.054f;
// With gamma=1: val = clamp(x, A, B) [linear interpolation between A and B].
// The x input is the mask-dependent dB-scaled value (mask * 8.6859 from 0x24c43e0).
constexpr double CAP_A_LEVEL = -24.0;
constexpr double CAP_B_LEVEL = 28.0;
constexpr double CAP_GAMMA = 1.0;
constexpr double CAP_A_FREQ = 16.0;
constexpr double CAP_B_FREQ = 20000.0;
constexpr double CAP_GAMMA_FREQ = 1.0;
// ---- Empirical bridge fit (NOTES_LEVEL:147, phase-5 step 5b). ----
// C(f_k) = G·LUT(log10(am_k/res_k)) + W·warp(f_k)^A ; gain = (1C)·res^rp(Q).
// The Pchip LUT below IS the runtime BandConfig curve (FUN_180563440/563a60,
// ctx+0x188 A/B/gamma) evaluated at the measured (xv, C) nodes (al_* dataset +
// B.11 anchors). Marked EMPIRICAL (all numbers from the joint dual+al_* fit,
// honest trimmed metric); the structural parametric A/B/gamma form is its
+23
View File
@@ -1114,3 +1114,26 @@ framework — produces correct transform, but NOT bit-exact to the plugin DSP-FF
giant (FUN_18002f980 recursion + per-log2 factor tables) remain unwired. This is the
multi-week gap (roadmap P3), required only for byte-parity of the FFT-conv path; the
bridge renderer does not depend on it.
## ============ UPDATE 2026-08-21: FIX — restore Pchip LUT (revert 12094f8) + comb diagnosis ============
### FIX (commit e5e9700): revert parametric LUT regression.
12094f8 replaced the empirical Pchip LUT (framed_model) with the parametric linear
form (CAP_A_LEVEL=-24/B=28/gamma=1). With gamma=1 that reduces to IDENTITY on
xv=log10(am/res), breaking the whole mask chain: t1kq fc-scan err jumped +7.9 dB.
Re-instated lut_pchip: t1kq mean|err| 0.226 (was 7.9). Confirms NOTES:1060 F1 closure
(no parametric set beats Pchip at fixed bridge params). lut_parametric helper + CAP_
consts remain in framed_model.hpp as live-capture reference (currently unused).
### 24-bit metric loader CHECK
render_parity.py:43 already uses correct 24->64-bit sign extension (x>=0x800000 =>
x-0x1000000), NOT the buggy OR-0xFF000000. Repo metric harness is correct; an earlier
symptom of ~50 dB phantom ref levels was an artifact of a scratch loader, not the repo.
### COMB DIAGNOSIS (biggest open gap, mean 10 dB / max 14.7)
comb.wav tones are at ~-25.6 dBFS (500/1000/1500/2000/3000). comb_ref reduce = +0.02 dB
= soothe2 lets ALL tones pass ~unity on this input. Our model over-cuts -7..-15 dB.
=> NOT a multiband-combine problem; it is LEVEL-dependent: at input ~-25.6 dBFS with
band sens 2.24 for two of four bands, real reducer output is ~neutral, ours still cuts.
Likely the bridge LUT/level_scale is calibrated on the al_* fit levels, not on this
low/wide band config. Same class as the known low-level over-cut (al lv18/24, NOTES:964).
Next: calibrate level_scale per input level / verify sens enters the level path correctly.