docs: archive 4024стр NOTES_LEVEL, единый источник TOTAL README, runbook AGENTS, 3-шаг план
- handoff/NOTES_LEVEL.md 4413→397 (голова 24mm5+), хвост → handoff/archive/NOTES_LEVEL_2026-08-18_2026-08-23.md - handoff/NOTES_LEVEL_INDEX.md NEW навигатор, handoff/archive/ whitelist .gitignore - SESSION_HANDOFF/summary → archive + редиректы, NOTES_TWIN/NOTES_CAPTURE сжаты - README.md:13 единственный источник TOTAL 1.594/dual 0.193, AGENTS runbook, BITEXACT_PLAN 9→3 шага (каскад 9-19/k-маппинг/Δ)
This commit is contained in:
@@ -10,80 +10,49 @@
|
||||
|
||||
---
|
||||
|
||||
## Статус (24kk2, 2026-08-25)
|
||||
## Статус (24mm14, 2026-08-28) — ЕДИНСТВЕННЫЙ ИСТОЧНИК TOTAL
|
||||
|
||||
**Цель — bit-exact реверс** (гейт смены канона зафиксирован пользователем: только
|
||||
после прослеживания всех параметров до декомпа и схождения корпуса в шумовой пол).
|
||||
Декомпиляция DSP-ядра закрыта (~95%); дизассемблы в `handoff/nls_dasm/` (~140).
|
||||
**Канон (bridge, `framed_test` 44.1k): TOTAL 2.286 dB** — честная 24-bit trimmed метрика, 62 случая (`scripts/baseline_bridge.json`). Guard: `python3 scripts/corpus.py --compare scripts/baseline_bridge.json --tol 0.25`. Детали — `handoff/NOTES_LEVEL_INDEX.md`.
|
||||
|
||||
**Применение декодировано до формул** (сессия 24j…24kk2):
|
||||
**Цель — bit-exact** (гейт смены канона = все параметры прослежены до декомпа + корпус в шумовой пол). Декомп DSP-ядра ~95%, `handoff/nls_dasm/` ~140 `.dis`.
|
||||
|
||||
**Применение декодировано до формул** (сессии 24j…24mm14, журнал — `handoff/NOTES_LEVEL.md` живая голова + `handoff/archive/`):
|
||||
```
|
||||
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)
|
||||
```
|
||||
Калибровки формы (три независимых семейства, rms ≤0.016 дБ): α/β/c зависят от
|
||||
контента (α удваивается с числом тонов — частотное смешение шаблонно-локальное),
|
||||
q НЕ влияет на закон, sens входит линейно через lvl_raw.
|
||||
Калибровки (три независимых семейства, rms ≤0.016 дБ): α/β/c зависят от контента (α удваивается с числом тонов — частотное смешение шаблонно-локальное), q НЕ влияет на закон (`24kk`), sens линейно через lvl_raw (`24kk`).
|
||||
|
||||
- **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-семейство).
|
||||
- **dual-семейство решено (env-gated)**: 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`. Канон не тронут.
|
||||
- **Буфер FIR@540668** — промежуточное мин.-фазовое `exp(s−i·H(s))`; аудио = `exp(scratch)` напрямую.
|
||||
- **Тела bigkernel'ов** (рантайм IAT): `1803a06a0 / 180296c80 / 180323f20 / 1802dc0e0` — x87 exp-семейство (`handoff/BLOCKMAP_529fe0.md:540`).
|
||||
|
||||
### Главное за 2026-08-24…25 (сессии 24j–24kk2)
|
||||
### Главное за 2026-08-24…28 (24j–24mm14)
|
||||
|
||||
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-экспорты).
|
||||
1. **Применение = побиновный multiply** на вещественную маску; «×1.805» = `0.984×1.8345` (экспоненты стадий).
|
||||
2. **Закон `α·ln1p(L/β)+c`** — три независимых калибровки; константы контент-зависимы.
|
||||
3. **Слой STFT без синтез-окна** (`RT_SYN=1`); `WIN_WINDOW` 0.5→0.8 за 2049 сэмплов.
|
||||
4. **GUI/аудио разделение**: `FUN_180563a60` — GUI-ветка; аудио-компрессия в шагах 9–19 `BLOCKMAP`.
|
||||
5. **Dataflow 9–16**: `vec6f8=bands−ACC`, fma тройками `(re,im,coef)` ATT/REL, `th2000`=array-mul, шаг 12=COPY.
|
||||
6. **Детекторный каскад `180529c60` (vt+0x28)**: `|z| → Haar [0.25,0.5,0.25]×2 → peak/sin → w=1/inner → blend 5407a8`.
|
||||
7. **RFFT до df0 бит-точна** (`th1a90/th2180` + `buf548` scale 2^-12, `24mm9` 0.0065 dB).
|
||||
|
||||
```bash
|
||||
# Сборка и канонные команды:
|
||||
# Сборка и канонные команды (см. AGENTS.md — runbook):
|
||||
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.py --compare scripts/baseline_bridge.json --tol 0.25
|
||||
python3 scripts/corpus_structural.py --vs-bridge scripts/baseline_bridge.json
|
||||
```
|
||||
Детальная метрика и история — в `AGENTS.md`, `BITEXACT_PLAN.md`, `handoff/NOTES_LEVEL.md`
|
||||
(апдейты 20j…24kk2).
|
||||
|
||||
### Открытые bit-exact пробелы
|
||||
**Приоритет №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).
|
||||
### Открытые bit-exact пробелы (приоритет → `BITEXACT_PLAN.md`)
|
||||
1. **Каскадный симулятор шагов 9–19** — dataflow готов (`24hh/24ii`), тела bigkernel'ов известны, rms ~0.42 на угаданных формах → оп-за-оп транскрипция + `sc_*` датасеты.
|
||||
2. **k-маппинг фронтенда** (twin/am, `k=0.403 ∀q≥2`, `24x`).
|
||||
3. **Δ-правило вторых пиков** из pre-combine.
|
||||
|
||||
> Исторический блок (поведенческая/численная модель B.1…B.15, `framed_render.py`,
|
||||
> Pchip LUT, res_power) — см. `roadmap.md`; самодостаточен как справочник, но не канон.
|
||||
|
||||
<details><summary>Было (B.15 — историческая численная модель)</summary>
|
||||
|
||||
`framed_render.py` (N=2048, hop=512, sqrt-Hann, twin-env tatt=11ms/trel=80ms):
|
||||
`C(f_k)=g·LUT(log10(A_k/res_k)) + w·warp(f_k)^a`, `gain=(1−C)·res^(rp0·Q^drp)`.
|
||||
- Честная (trimmed) метрика: Q-dep rp → mean 0.175 dB; B.15 joint free-knot LUT → dual 0.027 dB.
|
||||
- Декомп DSP-ядра закрыт, `.dis` в `handoff/nls_dasm/`.
|
||||
|
||||
```bash
|
||||
python3 framed_render.py dual # (исторический канон B.15)
|
||||
```
|
||||
</details>
|
||||
> Исторический блок B.1…B.15 (`framed_render.py`, Pchip, `res_power`) — см. `handoff/archive/NOTES_LEVEL_2026-08-18_2026-08-23.md` и `roadmap.md`; не канон.
|
||||
|
||||
---
|
||||
|
||||
@@ -91,69 +60,52 @@ python3 framed_render.py dual # (исторический канон B.15)
|
||||
|
||||
```
|
||||
re-tools/
|
||||
├── README.md ← вы здесь
|
||||
├── AGENTS.md ← гайд для агентов: сборка, метрика, bit-exact пробелы
|
||||
├── roadmap.md ← журнал всех результатов/гипотез (B.1…B.15, P4)
|
||||
├── framed_render.py ← историческая численная модель (B.15, не канон)
|
||||
├── render_parity.py ← dB-parity харнесс (Goertzel steady-state замер)
|
||||
├── model_lut.py, model_dual.py ← исторические модели B.10/B.11 (collapse-фиты)
|
||||
├── model_fir.py ← bridge-модель B.12 (C=g·LUT+w·warp^a)
|
||||
│
|
||||
├── handoff/ ← журнал сессий
|
||||
│ ├── SESSION_HANDOFF.md ← инвентарь декомпа, трансляция, Phase-5 план
|
||||
│ ├── NOTES_TWIN.md ← twin-резонатор + caller + grid
|
||||
│ ├── NOTES_LEVEL.md ← level-path, mask-цепь, live-таблицы (САМЫЙ АКТУАЛЬНЫЙ)
|
||||
│ ├── NOTES_CAPTURE.md ← live-захват таблиц (registry heartbeat)
|
||||
│ └── nls_dasm/ ← 134 дизассембла декомпа (f_563440, f_563a60, f529fe0, twin, fft…)
|
||||
│
|
||||
├── README.md ← вы здесь (ЕДИНСТВЕННЫЙ источник TOTAL)
|
||||
├── AGENTS.md ← runbook: сборка, метрика, env-флаги, tooling hazard
|
||||
├── BITEXACT_PLAN.md ← план к bit-exact (3 шага, критерии, риски)
|
||||
├── roadmap.md ← журнал B-фаз (B.1…B.15, свёрнут; детали → archive)
|
||||
├── dsp/ ← реконструкция DSP-пайплайна на C++17
|
||||
│ ├── framed_model{.cpp,.hpp} ← ГЛАВНЫЙ: mask-apply цепь (P4, активный канон)
|
||||
│ ├── framed_test.cpp ← CLI рендер входа (N=2048, SR 44100) + метрика
|
||||
│ ├── rt_mask_tables{.hpp,.cpp}, rt_weights{.hpp,.cpp} ← live-таблицы (IIR A/B, warp…)
|
||||
│ ├── twin{.hpp,.cpp} ← бит-точный twin-резонатор (FUN_180535880)
|
||||
│ ├── levelpath.cpp/.hpp ← LUT-кривая FUN_180563440/563a60 + combine-ядра
|
||||
│ ├── freqpath.cpp/.hpp ← warp FUN_180530850 (0.87·x/(1+x/K))
|
||||
│ ├── fftconv.cpp/.hpp ← FFT-conv (0x535a70)
|
||||
│ ├── spectral.cpp/.hpp ← WOLA/STFT-обработчик
|
||||
│ ├── fft*.cpp, twiddle_*.cpp/hpp, phase_table.* ← FFT-планы/твилдлы
|
||||
│ ├── ms.hpp ← encode/decode mid/side
|
||||
│ ├── cody_waite.hpp ← быстрый sin/cos (FUN_1801de760/1e3f20)
|
||||
│ ├── soothe_constants.hpp ← константы из дампа
|
||||
│ ├── harness.cpp ← CLI: input.wav → output.wav (24-bit)
|
||||
│ ├── framed_model{.cpp,.hpp} ← ГЛАВНЫЙ: mask-apply цепь (канон)
|
||||
│ ├── framed_test.cpp ← CLI bridge-рендер (N=2048, SR 44100)
|
||||
│ ├── render48k.cpp ← структурная цепь 48k/4096 (resample → chain → resample)
|
||||
│ ├── rt_mask_tables{.hpp,.cpp}, rt_weights{.hpp,.cpp} ← live-таблицы (IIR A/B, warp)
|
||||
│ ├── twin{.hpp,.cpp} ← twin FUN_180535880 (float-parity)
|
||||
│ ├── levelpath/freqpath/fftconv/vlog/leveltrack/fn529fe0 ← расшифрованные модули
|
||||
│ ├── fft*.cpp, twiddle_*.cpp/hpp, phase_table.*, cody_waite.hpp
|
||||
│ └── CMakeLists.txt
|
||||
│
|
||||
├── *.java ← Ghidra-скрипты (analyzeHeadless, пост-скрипты)
|
||||
├── ghidra-proj/ ← Ghidra-проект (soothe2.gpr/.rep), вне git
|
||||
├── soothe_mem.bin ← дамп памяти плагина, вне git
|
||||
├── rwin_{A0,A1,B0,C0}.npy, r_freqaxis.npy ← живые таблицы (48k) из runtime-снимков
|
||||
│
|
||||
├── Измерение и фиты полосы: measure.py, probe.py, bandshape.py, fit_*.py,
|
||||
│ model_lut.py, notch.py (исторические, B-модели)
|
||||
├── Поведенческие симуляторы: sim.py, sim_v5.py, verify_sim.py (исторические)
|
||||
├── Инструменты REAPER-рендеров: sweep.py, run_sweep.py, tt_sweep.py,
|
||||
│ patchparam.py, addfx.lua
|
||||
├── Живая трассировка (yabridge-host + Frida): dump_soothe.py, rtall/rtscan/
|
||||
│ rtsig/rttbl/rtver/rtone/rtwin/rtdeep*.py, probe.py, procdump.py
|
||||
├── Параметр-мост и live-capture: setparam.lua, dump_params.lua,
|
||||
│ play.lua, scripts/step7_capture.py, scripts/rpp_setparam.py,
|
||||
│ scripts/corpus{,_structural}.py, scripts/phaseA/B*.py
|
||||
└── summary.md, notes_giant_fft.md
|
||||
├── handoff/
|
||||
│ ├── NOTES_LEVEL.md ← живой журнал (голова 24mm5+; хвост → archive/)
|
||||
│ ├── NOTES_LEVEL_INDEX.md ← оглавление журнала по датам/темам
|
||||
│ ├── BLOCKMAP_529fe0.md ← карта метода FUN_180529fe0 (актуальна)
|
||||
│ ├── NOTES_TWIN.md ← twin краткая справка (детали → dsp/twin.cpp)
|
||||
│ ├── NOTES_CAPTURE.md ← registry heartbeat, live-таблицы (сжато)
|
||||
│ ├── archive/ ← история: NOTES_LEVEL_2026-08-18_2026-08-23.md,
|
||||
│ │ SESSION_HANDOFF_2026-08-18.md, summary_v4.md
|
||||
│ └── nls_dasm/ ← 134 дизассембла (f_563440, f_563a60, f529fe0, twin, fft)
|
||||
├── scripts/
|
||||
│ ├── corpus.py / corpus_structural.py ← харнессы (guard --compare)
|
||||
│ ├── rendersnap2.py, campaign.py, disasm_func.py, iat_name.py ← инструменты 24j+
|
||||
│ └── lawfit22r.py, resalpha.py, cascade_sim.py, wine_*trace.py
|
||||
├── *.java ← Ghidra-скрипты (DumpFuns, ImportRtti …)
|
||||
├── soothe_mem.bin ← дамп памяти (вне git, VA−0x180000000)
|
||||
├── rwin_{A0,A1,B0,C0}.npy, r_freqaxis.npy ← живые таблицы (48k)
|
||||
└── framed_render.py, model_*.py, sim.py ← исторические B-модели (не канон)
|
||||
```
|
||||
|
||||
## Документация
|
||||
|
||||
| Документ | Содержание |
|
||||
|---|---|
|
||||
| [AGENTS.md](AGENTS.md) | **Старт для агента**: сборка, метрика, bit-exact пробелы, структура |
|
||||
| [BITEXACT_PLAN.md](BITEXACT_PLAN.md) | **Путь к bit-exact**: порядок работ (8 шагов), критерии, риски, точка входа |
|
||||
| [roadmap.md](roadmap.md) | Журнал всех результатов/гипотез (B.1…B.15, P4), статус по фазам, риски |
|
||||
| [handoff/SESSION_HANDOFF.md](handoff/SESSION_HANDOFF.md) | Инвентарь декомпа (§0), трансляция/ключевые адреса (§2), Phase-5 план (§6) |
|
||||
| [handoff/NOTES_LEVEL.md](handoff/NOTES_LEVEL.md) | **Level-path/mask-цепь, live-таблицы, bit-exact протокол** (самый актуальный) |
|
||||
| [handoff/NOTES_TWIN.md](handoff/NOTES_TWIN.md) | Twin-резонатор (FUN_180535880/536f90), caller, grid/oversample |
|
||||
| [handoff/NOTES_CAPTURE.md](handoff/NOTES_CAPTURE.md) | Live-захват таблиц (registry heartbeat, SR 48000) |
|
||||
| [handoff/nls_dasm/](handoff/nls_dasm/) | 134 дизассембла (f_563440, f_563a60, f529fe0, twin, iface, fft) |
|
||||
| [notes_giant_fft.md](notes_giant_fft.md) | FFT-планировщики/ядра/twiddle/Cody-Waite |
|
||||
| [summary.md](summary.md) | **Историческая** сводка поведенческой модели (v4, sim.py) |
|
||||
| [AGENTS.md](AGENTS.md) | **Runbook**: сборка, метрика, env-флаги, tooling hazard |
|
||||
| [BITEXACT_PLAN.md](BITEXACT_PLAN.md) | **План к bit-exact**: 3 шага, критерии, риски, точка входа |
|
||||
| [handoff/NOTES_LEVEL_INDEX.md](handoff/NOTES_LEVEL_INDEX.md) | **Оглавление журнала** по датам/темам → `NOTES_LEVEL.md` / `archive/` |
|
||||
| [handoff/NOTES_LEVEL.md](handoff/NOTES_LEVEL.md) | Живой журнал (голова 24mm5+; хвост → `archive/`) |
|
||||
| [handoff/BLOCKMAP_529fe0.md](handoff/BLOCKMAP_529fe0.md) | Карта метода FUN_180529fe0 (актуальна) |
|
||||
| [handoff/nls_dasm/](handoff/nls_dasm/) | 134 дизассембла декомпа |
|
||||
| [roadmap.md](roadmap.md) | Журнал B-фаз (свёрнут, детали → archive) |
|
||||
| [handoff/NOTES_TWIN.md](handoff/NOTES_TWIN.md) | Twin краткая справка (детали → `dsp/twin.cpp`) |
|
||||
| [handoff/NOTES_CAPTURE.md](handoff/NOTES_CAPTURE.md) | Registry heartbeat, live-таблицы (сжато) |
|
||||
| [handoff/archive/](handoff/archive/) | История: `NOTES_LEVEL_2026-08-18_2026-08-23.md`, `SESSION_HANDOFF_…`, `summary_v4.md` |
|
||||
|
||||
### Тестовый корпус `/home/m/soothe-bt/` (вне git)
|
||||
|
||||
@@ -198,15 +150,8 @@ gain = max(1 - C, eps) * res_k**rp # rp = rp0 * Q**drp (res_power)
|
||||
|
||||
---
|
||||
|
||||
## Чего не хватает / следующие шаги (bit-exact)
|
||||
## Чего не хватает / следующие шаги (bit-exact) → `BITEXACT_PLAN.md`
|
||||
|
||||
Текущий фокус — **детекторный фронт** (Шаг 9 плана): амплитудная нормировка am,
|
||||
форма res_k, сила IIR1/2 вдоль частоты — модель теряет ×2.8 уровня на изолированных
|
||||
пиках относительно реального плагина (NOTES_LEVEL 22g/22i). Открытое:
|
||||
- **Детекторный фронт** (приоритет №1, Шаг 9) — см. выше.
|
||||
- **PRNG-пролог** FUN_180529fe0 (LCG+LUT → fVar30) — per-frame рандомизация scale/dry-wet.
|
||||
- **FFT-conv** (0x535a70) — сглаживание маски перед FIR (P3).
|
||||
- **Бит-экзактный exp2** (0x26b820) вместо `std::exp2`.
|
||||
- Точная обратная связь combine/аккумулятора `0x5407c8` (консюмер не найден).
|
||||
- **SR-mismatch**: внутренний DSP 48000/N=4096 против хоста 44100/2048.
|
||||
- Стерео-путь M8 (link/balance/LR-vs-MS), межполосное суммирование (Шаг 8).
|
||||
1. **Каскадный симулятор шагов 9–19** (приоритет №1) — см. `BITEXACT_PLAN.md:1`.
|
||||
2. **k-маппинг фронтенда** twin/am (приоритет №2).
|
||||
3. **Δ-правило вторых пиков** (приоритет №3).
|
||||
Reference in New Issue
Block a user