Files

4.8 KiB
Raw Permalink Blame History

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 обновления 24j24kk2 → 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=rdxr10)
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+).