From 74985fe33134cbe94bd94d659a8ac6e1ffe2b7fa Mon Sep 17 00:00:00 2001 From: Psychotoxical Date: Fri, 10 Apr 2026 01:12:06 +0200 Subject: [PATCH] fix(audio): fall back to track gain when album gain is missing MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In album gain mode, tracks without albumGain tags received no ReplayGain adjustment at all. Now falls back to trackGain before defaulting to 0 dB — fixes inconsistent loudness across albums where only some tracks have albumGain metadata. Co-Authored-By: Claude Sonnet 4.6 --- src/store/playerStore.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/store/playerStore.ts b/src/store/playerStore.ts index c3716091..8ed4e0a4 100644 --- a/src/store/playerStore.ts +++ b/src/store/playerStore.ts @@ -353,7 +353,7 @@ function handleAudioProgress(current_time: number, duration: number) { const authState = useAuthStore.getState(); const replayGainDb = authState.replayGainEnabled ? (authState.replayGainMode === 'album' - ? nextTrack.replayGainAlbumDb + ? (nextTrack.replayGainAlbumDb ?? nextTrack.replayGainTrackDb) : nextTrack.replayGainTrackDb) ?? null : null; const replayGainPeak = authState.replayGainEnabled @@ -814,7 +814,7 @@ export const usePlayerStore = create()( setDeferHotCachePrefetch(true); const url = resolvePlaybackUrl(track.id, authState.activeServerId ?? ''); const replayGainDb = authState.replayGainEnabled - ? (authState.replayGainMode === 'album' ? track.replayGainAlbumDb : track.replayGainTrackDb) ?? null + ? (authState.replayGainMode === 'album' ? (track.replayGainAlbumDb ?? track.replayGainTrackDb) : track.replayGainTrackDb) ?? null : null; const replayGainPeak = authState.replayGainEnabled ? (track.replayGainPeak ?? null) : null; invoke('audio_play', { @@ -896,7 +896,7 @@ export const usePlayerStore = create()( if (freshSong) set({ currentTrack: trackToPlay }); const authStateCold = useAuthStore.getState(); const replayGainDbCold = authStateCold.replayGainEnabled - ? (authStateCold.replayGainMode === 'album' ? trackToPlay.replayGainAlbumDb : trackToPlay.replayGainTrackDb) ?? null + ? (authStateCold.replayGainMode === 'album' ? (trackToPlay.replayGainAlbumDb ?? trackToPlay.replayGainTrackDb) : trackToPlay.replayGainTrackDb) ?? null : null; const replayGainPeakCold = authStateCold.replayGainEnabled ? (trackToPlay.replayGainPeak ?? null) : null; const coldServerId = useAuthStore.getState().activeServerId ?? ''; @@ -1271,8 +1271,8 @@ export const usePlayerStore = create()( if (!currentTrack || !currentTrack.id) return; const authState = useAuthStore.getState(); const replayGainDb = authState.replayGainEnabled - ? (authState.replayGainMode === 'album' - ? currentTrack.replayGainAlbumDb + ? (authState.replayGainMode === 'album' + ? (currentTrack.replayGainAlbumDb ?? currentTrack.replayGainTrackDb) : currentTrack.replayGainTrackDb) ?? null : null; const replayGainPeak = authState.replayGainEnabled