P1.5 SOLVED: live ctx (0x2370040, +0x24==48000) + level-tracker A[] + mask scalars captured via realtime playback; method play.lua + rtctx_rt.py; prior 'unreachable' was offline-engine artifact
This commit is contained in:
@@ -94,3 +94,33 @@
|
||||
0x54087c = raw band/mix). Two unknown constants remain from the (lost) binary: 0x24c4348, 0x24c44a4.
|
||||
- => P1.5 "live capture" is a dead end; scalars must be derived statically or the two missing
|
||||
constants recovered from the original soothing_mem.bin (not currently present in workspace).
|
||||
|
||||
## 2026-08-20b (P1.5 SOLVED: live ctx + level-tracker A[] captured via realtime playback)
|
||||
The dead end above was wrong — the missing piece was REALTIME audio playback, not more scanning.
|
||||
`-renderproject` uses the OFFLINE audio engine (fields live "only during audio", per earlier note);
|
||||
the ctx object only materializes during a realtime transport play.
|
||||
|
||||
### Method (works)
|
||||
- play.lua (repo): `reaper.Main_OnCommand(1007)` (Transport:Play) + hold ~300s.
|
||||
- rtctx_rt.py (repo): `reaper render_long.rpp play.lua` → find yabridge-host → chunked snapshot
|
||||
(~796MB, 1056 regs) DURING playback → scan heap for the ctx.
|
||||
- ctx marker that WORKS live: **+0x24 == 48000.0f (0x473b8000)**, NOT 40000.0f (40000 was the
|
||||
static ctor rodata value; live it is the internal SR = 48000, confirming NOTES_CAPTURE SR=48000).
|
||||
|
||||
### Result (captured live, saved handoff/rtctx_live.json)
|
||||
- **ctx = 0x2370040** (region 0x2022000). Field pointers (all point at registry tables):
|
||||
0x540688=identity([00] 0x2962580), 0x540698=window([01] 0x14b4240), 0x5406a8=levels([02]),
|
||||
0x5406b8=WA([03]), 0x5406c8=WB([04]), 0x5406d8=WC([05]), 0x5406e8=WD([06]),
|
||||
0x540748=warp([12] 0x14bc280), 0x540768=LUT-knee([14]). (NOTE: offsets +0x40 from the
|
||||
earlier static table — window is 0x540698 live, not 0x540658 as in the f_52b570 disasm label.)
|
||||
- **Mask scalars (float)**: 0x540870=440.955 (sens), 0x540874=1.0, 0x540878=1.0, 0x54087c=1.0,
|
||||
0x540880=25.0, 0x540884=10.0, 0x540888=1.0 (attack=10^0), 0x54088c=1.0 (release=10^0),
|
||||
0x540890=0, 0x540894=1200.0.
|
||||
- **level-tracker A[] (341 double each, per-bin IIR attack/release coeffs)**:
|
||||
- 0x4c0528 (attack): 0 → 0.340, 0.348, ... monotonic rising, plateau 0.6921 @bin>=319.
|
||||
- 0x3c0510 == 0x2c04f8 (release): 0 → 0.000753, 0.000885, ... slow small rise.
|
||||
Full arrays in handoff/rtctx_live.json (keys A_4c0528, A_3c0510, A_2c04f8).
|
||||
- BandConfig @ctx+0x188 is NOT populated here (zeros) — it lives at a different offset or only
|
||||
during band processing; still TBD (but LUT curve params A/B/γ are RPP-derived per roadmap).
|
||||
- Two more ctx-like bases found (0x2120040, 0x1780040) also have +0x24==48000; 0x2370040 is the
|
||||
populated one (0x2120040 has 0x540658..698 = 1.0 fill pattern — likely a second/free instance).
|
||||
|
||||
Reference in New Issue
Block a user