diff --git a/lib/hooks/useMultiTrackPlayer.ts b/lib/hooks/useMultiTrackPlayer.ts index 9bb0d4d..c6d4bf5 100644 --- a/lib/hooks/useMultiTrackPlayer.ts +++ b/lib/hooks/useMultiTrackPlayer.ts @@ -63,6 +63,7 @@ export function useMultiTrackPlayer( const loopStartRef = useRef(0); const loopEndRef = useRef(0); const playbackRateRef = useRef(1.0); + const isPlayingRef = useRef(false); // Keep tracksRef in sync with tracks prop useEffect(() => { @@ -319,7 +320,7 @@ export function useMultiTrackPlayer( }, []); const updatePlaybackPosition = useCallback(() => { - if (!audioContextRef.current) return; + if (!audioContextRef.current || !isPlayingRef.current) return; const elapsed = (audioContextRef.current.currentTime - startTimeRef.current) * playbackRateRef.current; const newTime = pausedAtRef.current + elapsed; @@ -500,6 +501,7 @@ export function useMultiTrackPlayer( } startTimeRef.current = audioContext.currentTime; + isPlayingRef.current = true; setIsPlaying(true); updatePlaybackPosition(); @@ -530,6 +532,7 @@ export function useMultiTrackPlayer( pausedAtRef.current = Math.min(pausedAtRef.current + elapsed, duration); setCurrentTime(pausedAtRef.current); + isPlayingRef.current = false; setIsPlaying(false); // Stop level monitoring