fix(render): VSTi export lay preset dung bridge channel (midi_channel, khong phai track.id)
render_session_container da tinh midi_channel round-robin melodic giong unifiedMidiRouter.allocateChannel, nhung VSTi branch truyen track.id vao bridge_state_preset_b64 -> lay preset cua channel stale (VD track5 -> ch5 trong khi realtime choi ch2) -> export sai loai nhac cu. Dung midi_channel.
This commit is contained in:
@@ -143,9 +143,10 @@ def bridge_state_preset_b64(channel=None, plugin_path=None) -> str:
|
||||
plugin load init patch → âm khác realtime (user tưởng "fallback"). Fallback
|
||||
này nối: dùng preset mà bridge đã capture cho channel đó.
|
||||
|
||||
Match: channel == int(track.id) (scheduleMidiNoteDispatch pushEvent
|
||||
channel: trkId) + path khớp plugin (basename, case-insensitive). Không tìm
|
||||
thấy → "" (giữ hành vi cũ — không đoán bừa preset channel khác)."""
|
||||
Match: channel == midi_channel (round-robin melodic — cùng quy ước
|
||||
unifiedMidiRouter.allocateChannel, KHÔNG phải track.id) + path khớp plugin
|
||||
(basename, case-insensitive). Không tìm thấy → "" (giữ hành vi cũ — không
|
||||
đoán bừa preset channel khác)."""
|
||||
try:
|
||||
st_path = os.path.join(os.environ.get("APPDATA", ""), "SonicForgeDAW",
|
||||
"state", "bridge_state.json")
|
||||
|
||||
@@ -716,8 +716,14 @@ class PythonRenderEngine:
|
||||
preset_b64 = (se2.get("preset_data")
|
||||
or track.get("preset_data"))
|
||||
if not preset_b64:
|
||||
# BUG v6: channel phải là midi_channel
|
||||
# (round-robin melodic — giống
|
||||
# unifiedMidiRouter.allocateChannel),
|
||||
# KHÔNG phải track.id → trước đây lấy
|
||||
# preset của channel stale (sai loại
|
||||
# nhạc cụ khi realtime chơi channel khác).
|
||||
preset_b64 = native_render.bridge_state_preset_b64(
|
||||
channel=track.get("id"),
|
||||
channel=midi_channel,
|
||||
plugin_path=(se2.get("plugin_path")
|
||||
or track.get("plugin_path")),
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user