fix: bounce silent — AudioRoutingEngine no longer full-tears-down sink on dest change
stopAllPlayback->updateSfRouting->startTrackPlayback reroutes bridge sink twice during bounce; each dest change previously called this.disconnect() = BridgeAudioNode teardown + async worklet reload, audio swallowed into _preBuffer (bounded 64 blocks) forever if worklet never reactivates -> silent WAV (only old reverb tail). Fix: rely on BridgeAudioNode.connect() re-pointing _gainNode (already handles dest switch without teardown); init() only when not ready. Add __sfDiag ROUTE + BRIDGE_AUDIO (frames/ peak/path per sec) to verify at bounce end.
This commit is contained in:
@@ -24,8 +24,8 @@
|
||||
// Idempotent: updateSfRouting/ensureMasteringRouting chay tren MOI keydown/
|
||||
// note-on — neu da noi dung dest thi KHONG disconnect (disconnect flush ring
|
||||
// -> am phim dang vang bi cat). Chi doi khi dest/track thuc su khac.
|
||||
if (window.__sfDiag) window.__sfDiag("ROUTE to=" + (trackId || "masterBus") + " prev=" + (this._trackId || "masterBus") + " bridgeReady=" + bridgeNode.isReady() + " conn=" + this._connected);
|
||||
if (this._connected && this._dest === dest && this._trackId === (trackId || null)) return true;
|
||||
this.disconnect();
|
||||
if (!bridgeNode.isReady()) bridgeNode.init();
|
||||
bridgeNode.connect(dest);
|
||||
this._connected = true;
|
||||
|
||||
Reference in New Issue
Block a user