diff --git a/roadmap.md b/roadmap.md index 7893556..506d5d0 100644 --- a/roadmap.md +++ b/roadmap.md @@ -211,3 +211,30 @@ static sin-table for its main FFT at 44.1k. - Method: rtone.py (single render, wait for out growth, scan), rtver.py (field verify). Old soothe_rt.bin is module-only range => heap objects absent (why vptr-scan found 0). + +### B.1 — C++ реализация DSP-ядра (2026-08-17) — STARTED +- `dsp/fft_plan.hpp/.cpp` — radix-2/4/8 планировщик (из гигантов FUN_18002f980 и др.) +- `dsp/fft_stage.hpp/.cpp` — stage kernels FUN_18000bfc0/18000c5e0 (cplx-mul + accum) +- `dsp/fft.hpp/.cpp` — полный цикл (plan→twiddle→execute) +- `dsp/spectral.hpp/.cpp` — SpectralProcessor (STFT + детектор) +- `dsp/filter.hpp/.cpp` — FilterGraph, DigitalFilter (M10) +- `dsp/detect.hpp/.cpp` — детектор резонансов (M2-M4, M6-M7) +- `dsp/ms.hpp/.cpp` — mid/side encode/decode (M8) +- `dsp/cody_waite.hpp` — sin/cos (FUN_1801de760/1801e3f20) +- `dsp/phase_table.hpp/.cpp` — sin-таблица 1024 +- `dsp/twiddle_builder.cpp` — FUN_180039b00 (ветка N>1024) +- `dsp/CMakeLists.txt` — сборка `libsoothe2_dsp.so` +- `dsp/harness.cpp` — WAV16→render→WAV24 (stereo+M8) + +### B.2 — Сборка и верификация (2026-08-17) +- `libsoothe2_dsp.so` — собрана (37.3K) +- `harness` — собран (23.2K), работает с WAV16→WAV24 +- TODO: `verify_bit_exact.py` — прогон всех свипов, побайтовое сравнение int24 PCM +- TODO: `dsp_notes.md` — документация (карта функция↔смысл, константы, LUT) + +### B.3 — Осталось сделать +1. **Twiddle-loader FUN_18014ec20** — декомпил есть, нужна транскрипция (Dekker-split + Cody-Waite) +2. **Bit-reverse permutation** — FUN_18003b6c0 с XOR-маской DAT_181c5e4e0 +3. **Детектор/маска** — развернуть 180536f90/180535880 полностью +4. **C++ транскрипция** — переписать fft.cpp с точным порядком FP-операций из декомпиляции +5. **Верификация** — подать тон/синусоиду в тот же путь, что и Reaper-рендер