diff --git a/jam-ui/src/components/client/JKSessionBackingTrackPlayer.js b/jam-ui/src/components/client/JKSessionBackingTrackPlayer.js index ecedb37be..c955c1257 100644 --- a/jam-ui/src/components/client/JKSessionBackingTrackPlayer.js +++ b/jam-ui/src/components/client/JKSessionBackingTrackPlayer.js @@ -39,6 +39,41 @@ const JKSessionBackingTrackPlayer = ({ } }, [isOpen, backingTrack]); + // Playback monitoring with 500ms polling + useEffect(() => { + let intervalId = null; + + if (isPlaying && jamClient) { + // Start polling when playing + intervalId = setInterval(() => { + try { + if (!jamClient) return; + + const positionMs = jamClient.SessionCurrrentPlayPosMs(); + const durationMs = jamClient.SessionGetTracksPlayDurationMs(); + const trackIsPlaying = jamClient.isSessionTrackPlaying(); + + setCurrentTime(formatTime(positionMs)); + setDuration(formatTime(durationMs)); + + // Sync playing state if changed + if (trackIsPlaying !== isPlaying) { + setIsPlaying(trackIsPlaying); + } + } catch (error) { + console.error('Error polling playback status:', error); + } + }, 500); + } + + // Cleanup: clear interval on pause/stop or unmount + return () => { + if (intervalId) { + clearInterval(intervalId); + } + }; + }, [isPlaying, jamClient, backingTrack]); + const handlePlay = async () => { try { if (isPlaying) {