fix(export): carry bridge-captured VSTi preset into offline render

Offline render tao bridge moi khong co preset -> plugin load init patch
-> am khac realtime (user tuong fallback). Gio doc presetBase64 tu
bridge_state.json (channel == track.id, plugin_path khop basename) va
truyen vao render_offline khi track khong nhung preset_data.
This commit is contained in:
2026-08-25 21:14:48 +07:00
parent 014d02283d
commit 57fa2e78fe
2 changed files with 50 additions and 1 deletions
+13 -1
View File
@@ -709,6 +709,18 @@ class PythonRenderEngine:
"start_beat": ev["start_beat"],
"duration_beats": ev["duration_beats"],
} for ev in midi_events]
# preset_data rỗng → fallback preset
# bridge đang giữ (bridge_state.json) —
# export tạo bridge mới init patch ≠ âm
# realtime user đang nghe.
preset_b64 = (se2.get("preset_data")
or track.get("preset_data"))
if not preset_b64:
preset_b64 = native_render.bridge_state_preset_b64(
channel=track.get("id"),
plugin_path=(se2.get("plugin_path")
or track.get("plugin_path")),
)
out_path, _dur = native_render.render_offline(
instrument_id=instrument_id,
notes=bridge_notes,
@@ -716,7 +728,7 @@ class PythonRenderEngine:
sample_rate=self.sample_rate,
preset_id=se2.get("preset_id") or track.get("preset_id"),
preset_path=se2.get("preset_path") or track.get("preset_path"),
preset_data_b64=se2.get("preset_data") or track.get("preset_data"),
preset_data_b64=preset_b64,
soundfont_bank=soundfont_bank,
soundfont_program=soundfont_program,
plugin_path=se2.get("plugin_path") or track.get("plugin_path"),