diff --git a/roadmap.md b/roadmap.md index 506d5d0..20c3a87 100644 --- a/roadmap.md +++ b/roadmap.md @@ -212,13 +212,13 @@ - 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 +### B.1 — C++ реализация DSP-ядра (2026-08-17) — IN PROGRESS - `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/spectral.hpp/.cpp` — SpectralProcessor (STFT + детектор + mask application) - `dsp/filter.hpp/.cpp` — FilterGraph, DigitalFilter (M10) -- `dsp/detect.hpp/.cpp` — детектор резонансов (M2-M4, M6-M7) +- `dsp/detect.hpp/.cpp` — детектор резонансов (envelope + peak suppression) - `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 @@ -226,15 +226,17 @@ - `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 +### B.2 — Сборка и верификация (2026-08-17) — IN PROGRESS +- `libsoothe2_dsp.so` — собрана +- `harness` — работает с WAV16→WAV24 +- **Fixed:** WAV read aliasing bug (int16→float conversion) +- **Fixed:** In-place processing bug (separate input/output buffers) +- **Added:** Spectral detector with envelope + peak suppression - 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-рендер +3. **C++ транскрипция** — переписать fft.cpp с точным порядком FP-операций из декомпиляции +4. **Верификация** — подать тон/синусоиду в тот же путь, что и Reaper-рендер