mirror of
https://github.com/kilyabin/psysonic.git
synced 2026-07-22 06:25:41 +00:00
fix(audio): fall back to track gain when album gain is missing
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 <noreply@anthropic.com>
This commit is contained in:
@@ -353,7 +353,7 @@ function handleAudioProgress(current_time: number, duration: number) {
|
|||||||
const authState = useAuthStore.getState();
|
const authState = useAuthStore.getState();
|
||||||
const replayGainDb = authState.replayGainEnabled
|
const replayGainDb = authState.replayGainEnabled
|
||||||
? (authState.replayGainMode === 'album'
|
? (authState.replayGainMode === 'album'
|
||||||
? nextTrack.replayGainAlbumDb
|
? (nextTrack.replayGainAlbumDb ?? nextTrack.replayGainTrackDb)
|
||||||
: nextTrack.replayGainTrackDb) ?? null
|
: nextTrack.replayGainTrackDb) ?? null
|
||||||
: null;
|
: null;
|
||||||
const replayGainPeak = authState.replayGainEnabled
|
const replayGainPeak = authState.replayGainEnabled
|
||||||
@@ -814,7 +814,7 @@ export const usePlayerStore = create<PlayerState>()(
|
|||||||
setDeferHotCachePrefetch(true);
|
setDeferHotCachePrefetch(true);
|
||||||
const url = resolvePlaybackUrl(track.id, authState.activeServerId ?? '');
|
const url = resolvePlaybackUrl(track.id, authState.activeServerId ?? '');
|
||||||
const replayGainDb = authState.replayGainEnabled
|
const replayGainDb = authState.replayGainEnabled
|
||||||
? (authState.replayGainMode === 'album' ? track.replayGainAlbumDb : track.replayGainTrackDb) ?? null
|
? (authState.replayGainMode === 'album' ? (track.replayGainAlbumDb ?? track.replayGainTrackDb) : track.replayGainTrackDb) ?? null
|
||||||
: null;
|
: null;
|
||||||
const replayGainPeak = authState.replayGainEnabled ? (track.replayGainPeak ?? null) : null;
|
const replayGainPeak = authState.replayGainEnabled ? (track.replayGainPeak ?? null) : null;
|
||||||
invoke('audio_play', {
|
invoke('audio_play', {
|
||||||
@@ -896,7 +896,7 @@ export const usePlayerStore = create<PlayerState>()(
|
|||||||
if (freshSong) set({ currentTrack: trackToPlay });
|
if (freshSong) set({ currentTrack: trackToPlay });
|
||||||
const authStateCold = useAuthStore.getState();
|
const authStateCold = useAuthStore.getState();
|
||||||
const replayGainDbCold = authStateCold.replayGainEnabled
|
const replayGainDbCold = authStateCold.replayGainEnabled
|
||||||
? (authStateCold.replayGainMode === 'album' ? trackToPlay.replayGainAlbumDb : trackToPlay.replayGainTrackDb) ?? null
|
? (authStateCold.replayGainMode === 'album' ? (trackToPlay.replayGainAlbumDb ?? trackToPlay.replayGainTrackDb) : trackToPlay.replayGainTrackDb) ?? null
|
||||||
: null;
|
: null;
|
||||||
const replayGainPeakCold = authStateCold.replayGainEnabled ? (trackToPlay.replayGainPeak ?? null) : null;
|
const replayGainPeakCold = authStateCold.replayGainEnabled ? (trackToPlay.replayGainPeak ?? null) : null;
|
||||||
const coldServerId = useAuthStore.getState().activeServerId ?? '';
|
const coldServerId = useAuthStore.getState().activeServerId ?? '';
|
||||||
@@ -1272,7 +1272,7 @@ export const usePlayerStore = create<PlayerState>()(
|
|||||||
const authState = useAuthStore.getState();
|
const authState = useAuthStore.getState();
|
||||||
const replayGainDb = authState.replayGainEnabled
|
const replayGainDb = authState.replayGainEnabled
|
||||||
? (authState.replayGainMode === 'album'
|
? (authState.replayGainMode === 'album'
|
||||||
? currentTrack.replayGainAlbumDb
|
? (currentTrack.replayGainAlbumDb ?? currentTrack.replayGainTrackDb)
|
||||||
: currentTrack.replayGainTrackDb) ?? null
|
: currentTrack.replayGainTrackDb) ?? null
|
||||||
: null;
|
: null;
|
||||||
const replayGainPeak = authState.replayGainEnabled
|
const replayGainPeak = authState.replayGainEnabled
|
||||||
|
|||||||
Reference in New Issue
Block a user