V45.8: fix Qin VST2 loop wrap crackle - wrap release them NOTE_OFF per-pitch (timelinePitchesRef) vi CC123 khong an voi VST2 (Qin bo qua all-notes-off CC) -> note cu ring qua seam re-trigger cung pitch = giat; per-note OFF da chung minh an (panic 128 noteOff o STOP, D18c); v=202608292315

This commit is contained in:
2026-08-29 22:42:02 +07:00
parent 85fdcb16e2
commit 4c0987733e
3 changed files with 21 additions and 4 deletions
+13
View File
@@ -26323,6 +26323,19 @@ const App = () => {
var _ch = trackMidiChannelsRef.current[_tid];
window.NativeBridgeService.dispatchMidiEvent('CC', _ch, 123, 0, 0, 0, 0, false);
if (!_wrapRelease) window.NativeBridgeService.dispatchMidiEvent('CC', _ch, 120, 0, 0, 0, 0, false);
// D18d: wrap - NOTE_OFF tung pitch dang keu (timelinePitchesRef).
// CC123 khong an voi VST2 (Qin bo qua all-notes-off CC) -> note cu
// ring qua seam -> re-trigger cung pitch chong nhau = crackle.
// Per-note OFF da chung minh an (panic 128 noteOff o STOP; D18c).
if (_wrapRelease) {
var _tps = (timelinePitchesRef.current || {})[_tid];
if (_tps && _tps.size) {
_tps.forEach(function (_p) {
window.NativeBridgeService.dispatchMidiEvent('NOTE_OFF', _ch, _p, 0, 0, 0, 0, false);
});
}
if (timelinePitchesRef.current) delete timelinePitchesRef.current[_tid];
}
});
}
} catch (e) { console.warn('[Stop] midi panic error:', e); }