Files
soothe2-re/roadmap.md
T
Matiq f73724fee7 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-маппинг/Δ)
2026-08-29 03:15:42 +03:00

65 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Roadmap: bit-exact реверс DSP-ядра oeksound soothe2 (v1.1.2)
## Цель
Воспроизвести DSP-путь soothe2 в виде **собираемого standalone C++** с **побайтово идентичным** выходом (bit-exact).
## Результат
`re-tools/dsp/``*.cpp/*.h` (классы DSP), `CMakeLists.txt`, `harness.cpp` (WAV16 → рендер → WAV24), `dsp_notes.md` (карта функция↔смысл), `verify_bit_exact.py`.
## Статус — см. `README.md:13` (единственный источник TOTAL)
> **Итог 2026-08-28 (24mm14):** применение декодировано до формул `mask=10^(cut_D/20)`, `cut_D=α·ln1p(lvl/β)+c` (rms ≤0.016, 3 семейства), слой STFT без синтез-окна, dual-корпус 0.193 dB (канон 3.264). Гейт = bit-exact. Остаток: 3 шага `BITEXACT_PLAN.md:1` (каскад 919, k-маппинг, Δ-правило). Архив B-фаз ниже свёрнут.
<details><summary>История B-фаз (B.1…P4.3) — свёрнуто, детали → handoff/archive/ + git log</summary>
- **Статический декомп ~95%**: twin, generator case8, level-path (0x529fe0/0x563440/0x563a60), mask-apply, IIR-трекеры, FFT-conv (0x535a70), render-loop FUN_18052e260 — `.dis` в `handoff/nls_dasm/`.
- **Структурная цепь** `dsp/framed_model.cpp::process_band_structural` (48k/4096): `scale→LUT(level)→IIR1→IIR2→mirror→blend/exp2→combine→dual-warp→IIR3×2→dry/wet`; live-таблицы `rt_mask_tables`. Корпус: comb 6.12 (bridge 10.15), res 0.44.
- **Численная модель B.10…B.15**: `C=g·LUT(xv)+w·warp^a`, `gain=(1C)·res^rp`, rp=0.0275·Q^0.2159 (mean 0.175), Pchip LUT (dual 0.027). Канон — `framed_render.py` (исторический).
- **Фазы P1P5**: twin float-parity 1.27e-5, FFT-conv, leveltrack, LUT, mask-apply — в основном готово; осталось каскад 9–19 + twin/am + Δ.
### Ключевые находки (итог, свёрнуто)
- Маска аддитивная `C=g·LUT+w·warp^a` (не мультипликация).
- `res_power` `gain=(1C)·res^rp` — закрывает 500Hz residual.
- `0x530d30` дважды NEGATIVE — тилт не оттуда.
- LUT — гамма-монотонная `FUN_180563440` (Pchip немонотонна).
- Константы: SCALE=1/1024, DB_CONV=8.6859, IIR α=0.1, LCG 0x3cdca.
</details>
## Контракт из manual (`soothe2_ManualFAQ.pdf`)
| # | Факт | Следствие |
|---|---|---|
| M1 | Soft/Hard меняет всё | mode = препроцессор детектора |
| M2 | Depth ±18, до 60 dB | depthcurve-LUT, clip 60 dB |
| M5 | Attack/Release частотно-зависимы | Env — частотный масштаб |
| M8 | Stereo link/balance/L-R vs M/S | детектор на sum |
| M10 | Банды: 2 cut + 4 general | `FilterGraph<float,6,0x400>` |
## Топология пайплайна (Приложение A, стр.30)
```
main/sidechain → input trim → analysis (depth/sharpness/selectivity; EQ per-band)
→ stereo apply + balance → ms encode? → processing (M/S) → mix → bypass → output
```
## Журнал вех (свёрнуто)
| Веха | Дата | Суть |
|---|---|---|
| B.1B.6 | 08-17 | C++ каркас, twin, dispatch, band-структура |
| B.10B.15 | 08-18…19 | Модели C/LUT, bridge `C=g·LUT+w·warp^a` (0.236), res_power, dB-parity 0.268 |
| P4.1P4.3 | 08-20 | Декомп FUN_180529fe0, live-таблицы, dual-warp |
Полный журнал — `handoff/NOTES_LEVEL_INDEX.md` + `git log`.
## Где лежат детали
- `README.md:13` — актуальный статус (TOTAL).
- `handoff/NOTES_LEVEL.md` (живая голова) + `handoff/archive/NOTES_LEVEL_2026-08-18_2026-08-23.md` — журнал.
- `handoff/BLOCKMAP_529fe0.md` — карта метода 9–19.
- `handoff/NOTES_TWIN.md` — twin краткая справка.
- `handoff/NOTES_CAPTURE.md` — registry heartbeat.
- `notes_giant_fft.md` — FFT/twiddle.