24mm5: full band-loop register-level buffer map (two log-exp rounds with bidir-IIR4 in log domain = spectral mixing); design 535a70 resolves to THE conv body 1802a24c0 (open item 22z closed as identity)

This commit is contained in:
2026-08-26 02:45:33 +03:00
parent a79c8f4934
commit e9125d4024
+53
View File
@@ -615,3 +615,56 @@ err = 1 q·A
52b3a0/52b3aa: 140a40(exp-var)/140b00 — пост-17 52b3a0/52b3aa: 140a40(exp-var)/140b00 — пост-17
52b716/52b71d: 140b30(кривая-float)/140aa0 — FIR-секция 52b716/52b71d: 140b30(кривая-float)/140aa0 — FIR-секция
``` ```
## ДОПОЛНЕНИЕ 24mm5: ПОЛНАЯ КАРТА ТРАКТА — буферы каждого шага; design = conv-тело 22z
### Полоса-цикл (float-путь), трасса регистров 52a580–52b3cd
```
пре: [678i] *= скаляры (s888-цепь, xmm7·[540870]·[54088c])
LOG#1 (140980!) на [678i] ; 52a63a — В ЛОГ-ДОМЕН заранее
combine 52d650([678i],[6f8])
шаг 9a: vec698@698 *= (1[54087c]) ; zero
шаг 9b: vec6f8@6f8 += [54087c]·0.8
шаг 9c: DIVIDE dst=[678i]: A=arg(rcx)=[678i], B=arg(rdx)=[6f8]
⇒ [678i] = vec6f8 / bands_curve ; in-place
шаг 10: dc40: rcx=ACC_i(@7c8+i!), rdx=[678i], r8=[6f8]
⇒ vec6f8 = bands_curve ACC_i ; ACC — таблица указателей 7c8
шаг 11: fma ATT(@6c8)/REL(@6e8) — пары вызовов 1fa0/1940
шаг 12: COPY 1b80/1d60 c [678i]
шаг 13: зеркало 9a/9b + оп 1eb0(cbe0)([678i],[6f8])
шаг 14: EXP#1 (1409e0=expf) на [678i]; затем += (1)
шаг 15: array-mul: X[rsp+0x40] *= [678i] ; НЕ bands*=track!
шаг 16: [678i] *= kWarp@[5406a8]
LOG#2 (140980) на [678i] ; 52aefd — возврат в лог!
IIR4 ×2 бидир ; ~52af0952b2b6, СПЕКТРАЛЬНОЕ
; СМЕШЕНИЕ В ЛОГ-ДОМЕНЕ
скаляры xmm14(0.7)/xmm15(0.5)-класс
шаг 17: EXP#2 (1409e0) на [678i]; += scalar; exp-var 140a40 финал
→ bands_final @678i
```
### FIR-секция (52b3cd52b94a)
```
bands_final *= s888, *= [540888]; += xmm7 (скаляр с expf(ln1000)=0.001)
DESIGN: call 535a70(rcx=scratch@628, rdx=bands)
535a70 = диспетчер СО СВОПОМ аргументов → ILT 140a10/140a70 →
→ РЕЗОЛВ: float=1802a24c0 (!!!), double=1802fa420
⚡ ЭТО ТЕЛО FFT-CONV ИЗ ОТКРЫТОГО ВОПРОСА 22z («conv_float_a24c0.dis»,
184K AVX2). Дизайн детектора == недекодированный conv. Пазл склеен.
дальше: copy th2210; complex-op th2180/th1bb0 с твидл-буферами
548/550/598; знак 1 (52d920); EXP 140b30(=1803831c0);
окно 52d990(WINfreq); pair-scalar 1880/1ca0; *= wet[540888];
финал df0(FIR, track_i)
```
### Где γ=1.760561
mask = bands_final^γ точно ⇒ γ возникает между scratch=log(bands_final)
и финальной маской: либо ВНУТРИ design 1802a24c0 (масштаб на выходе),
либо в комплекс-op цепочке 52b64452b716 перед EXP 140b30. Обе точки
локализованы до ~десятка инструкций — декод следующего раунда.
### Исправление понимания слотов
- 688 = exp(628) тривиально: 628 — копия лога bands_final (design),
688 — сами bands_final (или их exp-копия). «track» — имя рендерснапа.
- 678 ПОСЛЕ цикла = bands_final; применённая маска перезаписывает
поверх (финальный combine) — поэтому захваченный 678 матчит аудио.