diff --git a/handoff/NOTES_LEVEL.md b/handoff/NOTES_LEVEL.md index 94971c9..a2fdc92 100644 --- a/handoff/NOTES_LEVEL.md +++ b/handoff/NOTES_LEVEL.md @@ -2327,3 +2327,30 @@ CONT, дамп rcx/rdx на хите (скрипт fnall.py готов, нуже 4. reaper.ini: alsa_outdev/indev=null прописаны (бэкап /tmp/opencode/reaper.ini.bak) — realtime колбек всё равно не ожил (cpu 0.2 t/s), вопрос закрыт в пользу render-snap метода. + +## ============ UPDATE 2026-08-23i (23e): ЗАКОН СОШЁСЯ КОЛИЧЕСТВЕННО ============ + +Серия rendersnap: dual_b1q_0.5 + dual_b1q_3.0 (стационарные фазы). +1. **FIR = exp(0.984·scratch)** поточечно (коэф идентичен @43/@171) ⇒ ops + между log и exp — скалярный раундтрип, никакой межбиновой магии в самих ops. +2. **real_cut / FIR_cut = 1.798–1.810 константа** по всем 4 точкам + (q0.5: 5.70/6.58 FIR против 10.32/11.82 real; q3.0: 5.69/5.76 против + 10.29/10.32). Между кернелом и слышимым применением — ЛИНЕЙНЫЙ масштаб + ~1.805 в дБ-домене (кандидат: двойное применение/нормировка conv-стадии; + залочить при декоде потребителя, до тех пор EMPIRICAL-константа). +3. **Центр не зависит от q живьём**: scratch43 = −0.6565(q0.5) vs −0.6551(q3) + при том, что сырой bands[] мигает от 0.3 до 382 (детекторные IIR дают + стационар). Скайрт: Δscratch171(q3−q0.5)=+0.0937 ln ⇒ ×0.984×1.805 = + **+1.46 дБ** против реального Δ=1.50 дБ — сходится в пределах 3%. +4. Структура механизма окончательно: mask_log(f) = G(log(am_frame(f)), res_band(f)); + кернел = exp(mask_log) c падающим Hann-окном на [n/2..n); применение = + свёртка × масштаб 1.805. Это УЖЕ наша каноническая структура am/res — но + вход амплитуды берётся из спектра кадра напрямую (не через наш lvl-тракт), + и применение — FIR-свёртка, а не поточечное умножение STFT. +### NEXT (конкретика) +1. Восстановить точную зависимость scratch(band, res): прогнать q-серию + {0.1,0.2,...,10} + am-серию, аппроксимировать G (ожидаем линейность в логах + вида −k·ln(am/res)+c, k≈0.984·?): две точки уже дают k_skyрт согласован. +2. Найти источник масштаба 1.805 (декод потребителя FIR: кто читает 0x540668). +3. Транскрипция RT_FIRCONV=1: bands=STFT-спектр кадра → scratch=G(...) → + kernel=exp·HannWin → rfft-свёртка overlap-add → гейт корпуса.