75 lines
4.8 KiB
Markdown
75 lines
4.8 KiB
Markdown
# PROMPT FOR NEXT SESSION (2026-08-25, после 24kk2)
|
||
|
||
Продолжаем bit-exact реверс soothe2 в /home/m/re-tools (ветка main).
|
||
ГЕЙТ СМЕНЫ КАНОНА = BIT EXACT (решение пользователя): все параметры
|
||
прослежены до декомпа + корпус в шумовом пол. До тех пор канон не трогаем.
|
||
|
||
ПРОЧИТАТЬ ПЕРВЫМ: AGENTS.md (фаза-заголовок 24kk2 + env-флаги + инструменты)
|
||
→ handoff/NOTES_LEVEL.md обновления 24j–24kk2 → BLOCKMAP_529fe0.md
|
||
(дополнения 23b/24l/24hh/24ii).
|
||
|
||
## СОСТОЯНИЕ
|
||
|
||
ПРИМЕНЕНИЕ ДЕКОДИРОВАНО ДО ФОРМУЛ:
|
||
```
|
||
mask(b) = 10^(−cut_D(b)/20) вещественная, per-bin multiply кадра
|
||
cut_D(b) = α·ln1p(lvl_raw(b)/β)+c [+Δ вторые пики]
|
||
lvl_raw = am/res·scale наш фронтенд, float-parity ✓
|
||
слой = STFT БЕЗ синтез-окна RT_SYN=1
|
||
```
|
||
Калибровки (rms ≤0.016 дБ):
|
||
```
|
||
dual fc500 q0.5 s12 ДВА тона : α=3.2193 β=0.4927 c=+0.54
|
||
fc1000 q0.5 s12 ОДИН тон : α=1.6151 β=0.3645 c=+0.48
|
||
fc500 q0.5 s12 ОДИН тон : α=1.1530 β=0.4038 c=+0.33
|
||
```
|
||
Корпус: dual **0.193 max 0.438** с флагами `RT_VLAW=1 RT_SYN=1 RT_NOWARP=1
|
||
RT_NOIIR3=1 RT_IIR12=0`. Канон TOTAL 2.286 нетронут.
|
||
|
||
ОТЗЫВАНО И НЕ ВОЗВРАЩАТЬСЯ: ×1.805-свёртка [23e], OLA-нормировка [24i],
|
||
двухстадийный γ₀ как множитель закона [24m — это артефакт двух тонов],
|
||
клампы параметров [24dd], B∝am [24bb], axpy-семантика th2000 [24ii — это
|
||
array-multiply], «acc_i += bands[i]» шага 12 [24gg — это COPY].
|
||
|
||
## ЗАДАЧА №1: каскадный симулятор шагов 9–19 (оп-за-опом)
|
||
|
||
Dataflow декодирован (BLOCKMAP 24hh/24ii):
|
||
```
|
||
vec698 *= (xmm12−[54087c]) ; обнуление при дефолтах
|
||
vec6f8 += 0.8 ; базовая линия
|
||
bigkernel(vec6f8, bands_i, vec6f8)
|
||
vec6f8 = bands_curve − ACC_i ; COMBINE (dc40: out=rdx−r10)
|
||
f6f8_верх += ATT[k]·ACC[k]; низ += REL[k]·ACC[k] ; тройки re/im/coef
|
||
COPY(...) ; шаг 12 = memcpy!
|
||
bands += (−1.0); bigkernel in-place ; центрирование+нелинейность
|
||
bands *= track_i; bands *= kWarp ; th2000 = array-multiply
|
||
IIR4 ×2; финальные scale/op
|
||
→ bands[i] → design log → scratch → FIR → audio multiply exp(scratch)
|
||
```
|
||
Тела bigkernel'ов по рантайм-адресам: 1803a06a0/180296c80/180323f20/1802dc0e0
|
||
(x87 exp-семейство). Коэффициенты IIR-генератора 533340 исправлены
|
||
(насыщающая форма arg=|c|·g/n; p=[54087c]=1, mult=360, C=1000).
|
||
|
||
Метод проверки: собрать симулятор в Python (numpy), прогнать lvl_raw из
|
||
tract_* через каскад, сравнить с deepest-scratch кривыми sc_* — rms < 0.05 дБ
|
||
= замкнулось. Затем перенос в C++.
|
||
|
||
## ЗАДАЧА №2: параметризация α(контент)/fc
|
||
|
||
α удваивается с числом тонов (частотное смешение шаблонно-локальное —
|
||
далёкий тон не влияет, 24ll). Инструмент: scripts/campaign.py (ячейка ≈8 мин).
|
||
Двухтональная дистанционная серия уже снята (sc_d*, инверсия не сошлась —
|
||
нужен каскад из Задачи №1 сначала!).
|
||
|
||
## СРЕДА (грабли, всё проверено болью)
|
||
- rendersnap2.py: RENDER_FILE брать ИЗ rpp (клоны наследуют путь — однажды
|
||
перезаписали реф); каталоги снапов задавать уникальные (argv[3]).
|
||
- touch+mtime перед каждым замером (same-second cmake hazard).
|
||
- tone1k.wav громче dual.wav в 2.28× — при сравнении серий учитывать.
|
||
- Свип НЕ годится для Y/X-отношения; только мультитон/мультиуровень.
|
||
- Динамика V(t)↔g(t) на рампе не сходится — пары только из стационара.
|
||
- HW-ловушки под wine невозможны (wine держит слоты); INT3 требует
|
||
дисциплины fnwatch4 и ГАРАНТИРОВАННО свежего рендера.
|
||
- Метрика только честная: render_parity.load / Гёрцель последних 0.75 c.
|
||
- Коммитить подшагами; факты → NOTES_LEVEL (очередной номер 24ll+).
|