docs: NOTES — IIR3 bidirectional decode, combine thunk semantics, Step 2 re-scope

This commit is contained in:
2026-08-21 12:55:23 +03:00
parent 1a616e1b7b
commit a9d5581ad8
+32
View File
@@ -1221,3 +1221,35 @@ chain, not the bridge. comb stays OPEN (structural combine/acc, P4/P5).
NEXT: step 3 wire combine_acc track into mask output (currently computed, NEXT: step 3 wire combine_acc track into mask output (currently computed,
discarded); step 4 FFT-conv 0x535a70 mask smoothing; then decode BandConfig discarded); step 4 FFT-conv 0x535a70 mask smoothing; then decode BandConfig
ctx+0x188 writers to replace MULT placeholder with decomp value. ctx+0x188 writers to replace MULT placeholder with decomp value.
## ============ UPDATE 2026-08-21b: IIR3 bidirectional + combine semantics from raw decomp ============
### IIR3 is BIDIRECTIONAL (corrects NOTES:830 "inline TWICE")
- consumers_out.txt:955-1075: TWO [reset state 0x440510=0, forward pass, backward
pass] pairs. State PERSISTS from forward into backward within a pair; reset
between pairs. Operand order verified: y[i] = x[i]*B3[i] + state*A3[i]
(A3@0x3c0510 multiplies STATE, B3@0x340510 multiplies x). Backward iterates
nbin-2 .. 1 with descending coefficient index.
- Wired into structural chain (commit 1a616e1); LUT_MULT retuned 4.4->4.2;
smoke mean|err| 1.021 (vs 0.993 fwd-only — parity within noise, kept faithful).
### Combine block EXACT semantics (thunk-level, corrects both 20h and 20j notes)
- 8d60 sub: args (acc=0x5407c8, mask=0x540678, dst=f6f8=0x5406f8), dst=3rd arg:
f6f8[i] = mask[i] - acc[i] (acc NOT overwritten by sub; 20j was wrong)
- mirror f6f8 (11940 x2)
- 3c40 fma: f6f8_upper += kRTAtt*acc_upper ; f6f8_lower += kRTRel*acc_lower
(dst = F6F8 halves, b = acc — 20h had this right)
- 5a20: acc += mask (persistent per-band accumulator)
### CRITICAL SCOPE FINDING for Step 2 (combine wiring)
- In the ONLINE single-band path (0x5408b8==0) the updated f6f8/acc have NO
consumer inside FUN_180529fe0 before warp/IIR3/dry-wet: warp applies to
band buffer directly, blend overwrites f6f8 next band/frame. Verified by
exhaustive grep of consumers_out.txt (last 0x5406f8 use = offline branch).
- => combine CANNOT close t1k/al single-band tails by itself; its effect must
enter via (a) multiband combiner 0x5316e0 reading acc/f6f8 across bands, or
(b) FFT-conv stage. Step 2 re-scoped: decode 0x5316e0 acc consumption FIRST,
only then wire. Do NOT invent a track->mask feedback (would be empirical).
- Online blend confirmed: f6f8 = freqaxis*(1-mix) + mix*fVar25(0.8) via
6e40+15060 thunks, then bigkernel exp2 in-place on band (line 805-832).
### Commits: 9ffe60e (IIR3 fwd-only + retune), 1a616e1 (bidirectional + decode).