chore(probe): them param_burst kich thich set_param qua ctrl ring (FXRT_PROBE_PARAMS, FXRT_PROBE_PARAM_IDS)

This commit is contained in:
2026-08-24 12:03:08 +07:00
parent 4240f15e30
commit 86d5bbc372
+18 -1
View File
@@ -254,6 +254,22 @@ async def run_ws_probe(port, chain, secs, stall):
stall_state = {"until": 0.0}
async def param_burst():
# Mô phỏng fxRtPushAllParams (app gửi loạt set_param ngay sau WS open):
# numeric ParamID 0..3 → VST3 setParamNormalized THẬT trên bridge.
# Fix: setParam defer worker → audio loop không block → send interval ổn.
if not os.environ.get("FXRT_PROBE_PARAMS"):
return
await asyncio.sleep(0.8)
nslots = len(chain)
ids = [s.strip() for s in os.environ.get("FXRT_PROBE_PARAM_IDS", "0,1,2,3").split(",")]
for rep in range(4):
for slot in range(nslots):
for i, pid in enumerate(ids):
await ws.send(json.dumps({"cmd": "set_param", "slot": slot,
"key": pid, "value": 0.3 + 0.1 * i}))
await asyncio.sleep(0.4)
async def consumer():
while not stop.is_set():
if os.environ.get("FXRT_PROBE_CONSUMER_STALL") and \
@@ -280,7 +296,8 @@ async def run_ws_probe(port, chain, secs, stall):
async with websockets.connect(ws_url) as ws:
t0 = time.perf_counter()
tasks = [asyncio.create_task(producer()), asyncio.create_task(pump()),
asyncio.create_task(stall_scheduler()), asyncio.create_task(consumer())]
asyncio.create_task(stall_scheduler()), asyncio.create_task(param_burst()),
asyncio.create_task(consumer())]
if os.environ.get("FXRT_PROBE_NO_CONSUMER"):
for t in tasks:
t.cancel()