From 02dd6e8aa79926406881ec9d4b8bf3718b76112d Mon Sep 17 00:00:00 2001 From: Matiq Date: Wed, 19 Aug 2026 20:45:45 +0300 Subject: [PATCH] docs: exact structural LUT curve formulas (FUN_180563440 linear/power-law), consts from PE; roadmap Q1 static side closed --- handoff/NOTES_LEVEL.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/handoff/NOTES_LEVEL.md b/handoff/NOTES_LEVEL.md index d1c5e5d..d915a72 100644 --- a/handoff/NOTES_LEVEL.md +++ b/handoff/NOTES_LEVEL.md @@ -622,3 +622,21 @@ Previously-cold roots now present: 180529fe0 (2051in), 180563440, 180563ce0 (IIR object; not yet located. Registry gives per-bin WEIGHTS (done) — attack/release remain static-only. - Registry dump + all raw tables saved: /tmp/rtcapt/registry.txt, /tmp/rtcapt/*.f32. - Scripts captured into repo: rtsnap_fast.py (snapshot), findctx.py (locate), rtchunk.py (chunked IO). + +## ============ 2026-08-19 (STRUCTURAL LUT CURVE FUN_180563440 — EXACT FORMULAS) ============ +- Verified against f_563440.dis + PE constants 0x1824c3c54=0.0009775171(=1/1023? 1/0x3ff), + 0x1824c3ea4=1.0, 0x1824c41e0=2.0, 0x1824c4680=-1.0, 0x1824c3d8c=0.5, 0x1824c4f10=0x7fff.. (double |x| mask). +- Loop: 0x400 iterations (0..0x3ff), x = i*(1/1023)? const 0.0009775171 = 1/1023 → last bin x≈1.0. + (prior note said 1/1024 scale — corrected: constant value is 1/1023.) +- Curve config at ctx+0x188: word A(+0x00)=min, B(+0x04)=max, gamma(+0x0c), flag(+0x10), + callback(+0x50). Output written as double to ctx+0x198[i*8] (0x400 doubles). +- **Linear path (flag 0x10==0, 0x563595)**: t = x; if gamma!=1.0 and x>0: t = exp(log(x)/gamma); + val = A + (B-A)*t. (A=min of output, B=max). +- **Power-law path (flag!=0, 0x5635cd)**: t = 2x-1 (centered -1..1); if gamma!=1.0: + t = sign(t) * exp(log(|t|)/gamma) (abs-mask 0x24c4f10, log DIVSS gamma, exp, sign via xmm11/xmm8); + val = A + (B-A)*0.5*(1+t). When gamma=1.0 → val = A + (B-A)*x (identity linear). +- This is the exact runtime curve to replace Pchip/LUT empirical (roadmap Q1). Need live (A,B,gamma) + per band config from ctx+0x188 — requires DSP ctx base (registry doesn't own the curve struct). +- Level-tracker IIR (FUN_180563ce0) INIT confirmed: 341 bins x2?, state rows at +0x28/+0x40/+0x58 + init [1,0,0,0]/[-1,0,0,0], level coeff 0.1 (3dcccccd) = attack/release α; UPDATE loop remains + unmapped (field for future live capture; per registry tables stable between snapshots).