step7: live BandConfig capture infra + FUN_180563a60 decode — GUI-only, audio path refutes premise (22b)
This commit is contained in:
@@ -1391,3 +1391,47 @@ NEXT (приоритеты без изменений):
|
||||
возможная контент-зависимая ветка. Требует REAPER+плагин.
|
||||
2. combine consumer hunt (межполосный каскад) для dual/comb.
|
||||
3. Опционально: transient-анкоры для проверяемости temporal-класса.
|
||||
|
||||
## ============ UPDATE 2026-08-22b: STEP 7 EXECUTED → PREMISE REFUTED (BandConfig = GUI-only) ============
|
||||
|
||||
Инфраструктура захвата готова и работает:
|
||||
- `scripts/step7_capture.py <rpp>` — spawn reaper (+play.lua realtime) → chunked snapshot
|
||||
хоста yabridge → fingerprint level_gain-пар (level[j]==j/1024 exact) → u64-ref голосование
|
||||
базы level-path объекта (+0xe0+band*0x18) → decode всех BandConfig вокруг базы.
|
||||
- `play.lua` ИСПРАВЛЕН: reaper.Sleep НЕ существует в API (падал скрипт, транспорт
|
||||
продолжал играть без keep-alive) → цикл reaper.defer.
|
||||
- Грабли: /proc/<pid> vs /proc/<pid>/mem (pread каталога = тихий EIO на всё); layout
|
||||
объекта ПЛАВАЕТ между сессиями → оффсеты BandConfig не хардкодить, только fingerprint.
|
||||
|
||||
Живые константы (7 захватов: render_long, t1kq_base, t1k_b1f_1000, al_12, al_24,
|
||||
dual_b1q_0.5, comb_base — ВСЕ идентичны):
|
||||
- cfg@obj+0x168: **A=−24.0 B=+28.0 γ=1.0 flag=0 cb=SET** («кривая редукции»)
|
||||
- cfg@obj+0x170: A=16.0 B=20000.0 γ=1.0 cb=SET; shaper f32 @+0x20..: 0.55, 7.130898,
|
||||
2.772589(=ln16), 2.718282(=e)
|
||||
⇒ противоречие gap #3 разрешено: −24/28/1 подтверждено живьём; −13.78/68.29/0.344
|
||||
был ФИТОМ к рендер-референсам, не свойством плагина.
|
||||
|
||||
FUN_180563a60 расшифрован ДО КОНЦА (f_563a60.dis, 165 строк):
|
||||
- вход: mask-doubles obj+0x4198+band*0x2000 (пишет FUN_18056e3e0 из band-list
|
||||
+0x178→[+0x78/+0x84]); x-axis пар = j*(1/1024) (конста 0x24c3c50);
|
||||
dB = logf(mask)*8.685889 (=20/ln10, 0x24c43e0);
|
||||
- выход: gain[j] = clamp01(cb(A,B,dB)) где cb = std::function @cfg+0x90 — В ЖИВЫХ
|
||||
ЗАХВАТАХ cb ВСЕГДА SET ⇒ статическая ветка A/B/γ НЕ ВЫПОЛНЯЕТСЯ НИКОГДА;
|
||||
- статическая ветка (cb==NULL, для протокола): t=clamp01((dB−A)/(B−A));
|
||||
γ==1 → t; flag==0 → t^γ; flag!=0 → 0.5·(1+sign(2t−1)·|2t−1|^γ).
|
||||
|
||||
Callgraph: весь кластер 5631c0/563260 → 563440 → {56e3e0, 563a60} достижим ТОЛЬКО по
|
||||
DATA-xrefs (vtables 1826a03cc..420, 1824b14f0..510) — GUI-timer heartbeat. АУДИО-метод
|
||||
FUN_180529fe0 (Soothe2Module<float>::vtbl) НЕ ссылается на {+0x168,+0x170,+0x178,
|
||||
+0xe0,+0x198,+0x4198}; его callees — только memcpy-туннели (181ba94b0 ×13, 52dbc0, 52d920).
|
||||
Файл /tmp/consumers_out.txt восстановлен из decomp_funs.txt (215 строк, вне git!).
|
||||
|
||||
### ВЫВОДЫ (меняют приоритеты)
|
||||
1. **Шаг 7 BITEXACT_PLAN в исходной постановке ОПРОВЕРГНУТ**: BandConfig A/B/γ питает
|
||||
только GUI-отрисовку кривой, аудио-путь его не читает. Live-захват A/B/γ не может
|
||||
закрыть насыщение кривой редукции аудио-цепи.
|
||||
2. LUT-блок структурной цепи (t^γ·MULT с −13.78/68.29/0.344/MULT=4.2) = EMPIRICAL фит
|
||||
БЕЗ декомп-источника в аудио-пути (формула списана с GUI-функции!). Помечен EMPIRICAL;
|
||||
канон не меняем (корпус держит), но источник правды теперь внутри аудио-модуля.
|
||||
3. Новый приоритет №1: полный разбор аудио-тела FUN_180529fe0 (215 строк декомпа,
|
||||
/tmp/consumers_out.txt) + combine-consumer hunt — насыщение C_max≈0.70 сидит там.
|
||||
|
||||
Reference in New Issue
Block a user