diff --git a/lib/hooks/useMultiTrackPlayer.ts b/lib/hooks/useMultiTrackPlayer.ts index 48aa70b..90a707c 100644 --- a/lib/hooks/useMultiTrackPlayer.ts +++ b/lib/hooks/useMultiTrackPlayer.ts @@ -34,7 +34,7 @@ export function useMultiTrackPlayer(tracks: Track[]) { }, [tracks]); const updatePlaybackPosition = useCallback(() => { - if (!audioContextRef.current || !isPlaying) return; + if (!audioContextRef.current) return; const elapsed = audioContextRef.current.currentTime - startTimeRef.current; const newTime = pausedAtRef.current + elapsed; @@ -43,12 +43,16 @@ export function useMultiTrackPlayer(tracks: Track[]) { setIsPlaying(false); setCurrentTime(0); pausedAtRef.current = 0; + if (animationFrameRef.current) { + cancelAnimationFrame(animationFrameRef.current); + animationFrameRef.current = null; + } return; } setCurrentTime(newTime); animationFrameRef.current = requestAnimationFrame(updatePlaybackPosition); - }, [isPlaying, duration]); + }, [duration]); const play = useCallback(() => { if (tracks.length === 0 || tracks.every(t => !t.audioBuffer)) return;