From 7902acfbb89b0c5a78dbf3a8cb2a152dc2b5d253 Mon Sep 17 00:00:00 2001 From: Matiq Date: Sun, 23 Aug 2026 22:19:05 +0300 Subject: [PATCH] =?UTF-8?q?23e:=20law=20closed=20quantitatively=20?= =?UTF-8?q?=E2=80=94=20FIR=3Dexp(0.984*scratch)=20pointwise;=20real/FIR=20?= =?UTF-8?q?cut=20ratio=20constant=201.80=20across=20configs=20and=20bins?= =?UTF-8?q?=20(linear=20post-scale,=20EMPIRICAL=20until=20conv-stage=20dec?= =?UTF-8?q?oded);=20center=20independence=20of=20q=20proven=20live=20(scra?= =?UTF-8?q?tch43=20-0.6565=20vs=20-0.6551);=20skirt=20shift=20matches=20wi?= =?UTF-8?q?thin=203%=20(1.46=20vs=201.50=20dB)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- handoff/NOTES_LEVEL.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) 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 → гейт корпуса.