diff --git a/jam-ui/src/components/client/JKSessionBackingTrackPlayer.js b/jam-ui/src/components/client/JKSessionBackingTrackPlayer.js
index 8da52ff17..ddd7dc0a7 100644
--- a/jam-ui/src/components/client/JKSessionBackingTrackPlayer.js
+++ b/jam-ui/src/components/client/JKSessionBackingTrackPlayer.js
@@ -26,6 +26,10 @@ const JKSessionBackingTrackPlayer = ({
// Utility function to format milliseconds to M:SS format
const formatTime = (ms) => {
+ // Handle undefined, null, or NaN values
+ if (ms == null || isNaN(ms) || ms < 0) {
+ return '0:00';
+ }
const seconds = Math.floor(ms / 1000);
const minutes = Math.floor(seconds / 60);
const remainingSeconds = seconds % 60;
@@ -42,8 +46,12 @@ const JKSessionBackingTrackPlayer = ({
// Fetch and set duration immediately when track loads
try {
const durationInMs = jamClient.SessionGetTracksPlayDurationMs();
- setDurationMs(durationInMs);
- setDuration(formatTime(durationInMs));
+ console.log('JKSessionBackingTrackPlayer: Duration from jamClient:', durationInMs, 'Type:', typeof durationInMs);
+
+ // Ensure we have a valid number
+ const validDuration = (durationInMs != null && !isNaN(durationInMs) && durationInMs >= 0) ? durationInMs : 0;
+ setDurationMs(validDuration);
+ setDuration(formatTime(validDuration));
} catch (error) {
console.error('Error fetching track duration:', error);
setDuration('0:00');
@@ -66,10 +74,16 @@ const JKSessionBackingTrackPlayer = ({
const durationInMs = jamClient.SessionGetTracksPlayDurationMs();
const trackIsPlaying = jamClient.isSessionTrackPlaying();
- setCurrentPositionMs(positionMs);
- setCurrentTime(formatTime(positionMs));
- setDurationMs(durationInMs);
- setDuration(formatTime(durationInMs));
+ console.log('JKSessionBackingTrackPlayer polling:', { positionMs, durationInMs, trackIsPlaying });
+
+ // Ensure valid numbers
+ const validPosition = (positionMs != null && !isNaN(positionMs) && positionMs >= 0) ? positionMs : 0;
+ const validDuration = (durationInMs != null && !isNaN(durationInMs) && durationInMs >= 0) ? durationInMs : 0;
+
+ setCurrentPositionMs(validPosition);
+ setCurrentTime(formatTime(validPosition));
+ setDurationMs(validDuration);
+ setDuration(formatTime(validDuration));
// Sync playing state if changed
if (trackIsPlaying !== isPlaying) {
@@ -353,7 +367,7 @@ const JKSessionBackingTrackPlayer = ({
onClick={handlePlay}
disabled={!backingTrack}
>
-
+ Play/Pause