docs: full documentation refresh post-24kk2 — README status (application decoded to formulas, dual 0.193), AGENTS phase header + env-flags/tools tables, NEXT_PROMPT rewrite (cascade simulator + campaign recipes), PLAN/roadmap gate=BIT EXACT decision recorded
This commit is contained in:
@@ -10,54 +10,65 @@
|
||||
|
||||
---
|
||||
|
||||
## Статус (P5, 2026-08-22)
|
||||
## Статус (24kk2, 2026-08-25)
|
||||
|
||||
**Цель — bit-exact реверс.** Декомпиляция DSP-ядра закрыта (~95%): twin-резонатор,
|
||||
генератор case8, level-path, mask-apply (FUN_180529fe0), FFT-conv — расшифрованы;
|
||||
дизассемблы в `handoff/nls_dasm/` (~140).
|
||||
**Цель — bit-exact реверс** (гейт смены канона зафиксирован пользователем: только
|
||||
после прослеживания всех параметров до декомпа и схождения корпуса в шумовой пол).
|
||||
Декомпиляция DSP-ядра закрыта (~95%); дизассемблы в `handoff/nls_dasm/` (~140).
|
||||
|
||||
**Активный канон — C++ `FramedDetector`** (`dsp/framed_model.cpp`): структурная цепь
|
||||
**Применение декодировано до формул** (сессия 24j…24kk2):
|
||||
```
|
||||
level=am*res*scale -> IIR1/IIR2 leaky -> mask=exp2(-level)*blend -> combine/acc
|
||||
-> warp(mask*=0x540768, *=warp) -> IIR3x2 -> dry/wet -> FFT-conv
|
||||
mask(b) = 10^(−cut_D(b)/20) ← вещественная, per-bin multiply кадра
|
||||
cut_D(b) = α·ln(1+lvl_raw(b)/β)+c [+Δ у вторых пиков]
|
||||
lvl_raw = am/res·scale (наш детектор-фронтенд, float-parity ✓)
|
||||
слой = STFT БЕЗ синтез-окна (RT_SYN=1)
|
||||
```
|
||||
- **Level-tracker = би-направленный leaky-IIR** `y=A[i]·acc+B[i]·x` (B=1−A), live-таблицы
|
||||
в `dsp/rt_mask_tables.{hpp,cpp}`, `dsp/rt_weights.{hpp,cpp}`.
|
||||
- **Корпус (62 случая)**: bridge mean 1.594 dB; структурная цепь TOTAL 2.286,
|
||||
но comb **6.12** и res **0.44** — лучше bridge.
|
||||
Калибровки формы (три независимых семейства, rms ≤0.016 дБ): α/β/c зависят от
|
||||
контента (α удваивается с числом тонов — частотное смешение шаблонно-локальное),
|
||||
q НЕ влияет на закон, sens входит линейно через lvl_raw.
|
||||
|
||||
### Главное за 2026-08-21…22 (сессии 21a–22i)
|
||||
- **dual-семейство решено**: корпус 22 случая **mean 0.193 / max 0.438 dB**
|
||||
(канон 3.264). Флаги: `RT_VLAW=1 RT_SYN=1 RT_NOWARP=1 RT_NOIIR3=1 RT_IIR12=0`.
|
||||
- **Канон не тронут**: TOTAL 2.286 (env-gated эксперименты живут рядом).
|
||||
- **Буфер FIR@540668** = промежуточное мин.-фазовое представление
|
||||
(`exp(s−i·H(s))`, Гильберт по частоте) — аудио слышит `exp(scratch)` напрямую.
|
||||
- **Тела bigkernel'ов найдены** (рантайм-резолв IAT): 1803a06a0 / 180296c80 /
|
||||
180323f20 / 1802dc0e0 — x87-трансценденты (exp-семейство).
|
||||
|
||||
1. **«LUT-кривая» FUN_180563440/563a60 — GUI-only!** Весь кластер кривых питается от
|
||||
GUI-timer vtables; аудио-метод FUN_180529fe0 BandConfig не читает (22b). Live BandConfig
|
||||
у всех конфигов одинаковый: A=−24/B=28/γ=1. LUT-константы в модели помечены EMPIRICAL.
|
||||
2. **Пол редукции найден живьём и решён алгебраически** (22d/e): hot-тон упирается в жёсткий
|
||||
пол gain=−20.72 dB = `20·log10(blend·ln10/20)` с точностью 0.0055 dB;
|
||||
`floor_dB(sens) ≈ −18.78 − (sens−6)/3` (якорь sens6 = ln10/20 ровно).
|
||||
3. **Разрыв локализован в детекторном фронте** (22g/i): модель теряет ×2.8 уровня на
|
||||
изолированных пиках (lvl_raw 3.01 → 1.06 после IIR1-разведения), реальный плагин
|
||||
доводит пост-IIR lvl до ~3.12. Не форма кривой — амплитудная цепочка am/res/scale.
|
||||
4. **Инфраструктура**: официальный параметр-мост REAPER (`setparam.lua`/`dump_params.lua`),
|
||||
XML `<PARAM>` в RPP = декоративная копия; live-capture BandConfig (`scripts/step7_capture.py`);
|
||||
env-солверы констант (`RT_LUT_A/B/G/MULT`, `RT_LUT_OFF`, `RT_LVL_CAP`).
|
||||
5. Оффлайн-гипотезы Phase B (pooling/temporal/scalar-ρ) — все опровергнуты (22a);
|
||||
clipping-теория пола опровергнута (float-домен, 22g); mix = чистый dry/wet кроссфейд.
|
||||
### Главное за 2026-08-24…25 (сессии 24j–24kk2)
|
||||
|
||||
1. **Применение = побиновный complex-multiply кадра** на маску; «магический ×1.805»
|
||||
оказался произведением экспонент стадий построения буфера (0.984×1.8345).
|
||||
2. **Закон уровня универсальной формы** `α·ln(1+L/β)+c` — подтверждён тремя
|
||||
независимыми калибровками; константы зависят от контента (число тонов) и слабо от fc.
|
||||
3. **Слой STFT**: плагин НЕ домножает выход обратного FFT на окно
|
||||
(`RT_SYN=1`); WIN_WINDOW движка — фейд 0.5→0.8 ровно за 2049 сэмплов (=бинам кернела).
|
||||
4. **GUI/аудио разделение**: LUT-строитель FUN_180563a60 — GUI-ветка; аудио-компрессия
|
||||
живёт в семантиках шагов 9–19 BLOCKMAP.
|
||||
5. **Dataflow шагов 9–16 декодирован**: vec6f8=bands−ACC; fma тройками
|
||||
(re,im,coef) с ATT/REL; th2000=поэлементное умножение массивов (не axpy!);
|
||||
шаг 12=COPY (исправлен старый BLOCKMAP).
|
||||
6. **Инструменты**: rendersnap2 v7 (мягкий STOP-снаппер со слотами+скалярами,
|
||||
RENDER_FILE-фикс), patchparam.py (правка VST-чанка RPP!), campaign.py
|
||||
(ячейка параметризации), disasm_func.py (capstone с RIP-константами),
|
||||
iat_name.py (рантайм-резолв импортов через PE-экспорты).
|
||||
|
||||
```bash
|
||||
# Канон сборки и рендера:
|
||||
# Сборка и канонные команды:
|
||||
cmake -S dsp -B dsp/build && cmake --build dsp/build --target framed_test render48k
|
||||
./dsp/build/render48k /home/m/soothe-bt/tone1kq.wav /tmp/o48.wav 1000,0.99999785,12
|
||||
python3 scripts/corpus_structural.py --vs-bridge scripts/baseline_bridge.json
|
||||
```
|
||||
Детальная метрика и история — в `AGENTS.md`, `BITEXACT_PLAN.md`, `handoff/NOTES_LEVEL.md`
|
||||
(апдейты 20j…22i).
|
||||
(апдейты 20j…24kk2).
|
||||
|
||||
### Открытые bit-exact пробелы
|
||||
**Приоритет №1 — детекторный фронт**: амплитудная нормировка am, форма res_k, сила
|
||||
IIR1/2 вдоль частоты (модель теряет уровень на пиках). Далее: PRNG-пролог (LCG→fVar30),
|
||||
FFT-conv сглаживание, бит-экзактный exp2, combine/acc консюмер, SR-mismatch
|
||||
(внутренний DSP 48000/N=4096 против хоста). Полный список — `AGENTS.md`, `BITEXACT_PLAN.md`
|
||||
(Шаг 9), `NOTES_LEVEL.md`.
|
||||
**Приоритет №1 — каскадный симулятор шагов 9–19**: dataflow декодирован
|
||||
(24hh/24ii: vec6f8=bands−ACC, fma-тройки att/rel, ×track, ×warp, центрирование −1),
|
||||
тела bigkernel'ов найдены по рантайм-адресам — осталось сложить оп-за-опом и
|
||||
проверить на датасетах sc_* (rms каскада сейчас ~0.42 на угаданных формах).
|
||||
Далее: k-маппинг фронтенда (twin/am формулы), Δ-правило вторых пиков из pre-combine.
|
||||
Полный список — `AGENTS.md`, `BITEXACT_PLAN.md`, `NOTES_LEVEL.md` (24bb→24kk2).
|
||||
|
||||
> Исторический блок (поведенческая/численная модель B.1…B.15, `framed_render.py`,
|
||||
> Pchip LUT, res_power) — см. `roadmap.md`; самодостаточен как справочник, но не канон.
|
||||
|
||||
Reference in New Issue
Block a user