mirror of
https://github.com/kilyabin/psysonic.git
synced 2026-07-21 22:15:40 +00:00
feat(replaygain): add Auto mode that picks track vs album gain from queue context (#242)
Auto mode is the new default for ReplayGain. It picks album gain when an adjacent queue neighbour shares the same albumId (so "Play All" on an album, or any contiguous album block, gets album gain), otherwise track gain. Falls back to track gain when album gain is missing. - authStore: replayGainMode widened to 'track' | 'album' | 'auto', default 'auto' - playerStore: new resolveReplayGainDb(track, prev, next, enabled, mode) helper replaces five inline ternaries (audio_play hot path, gapless preload, cold-resume success + fallback, live update_replay_gain) - Settings: third "Auto" button + contextual hint when active - i18n: replayGainAuto + replayGainAutoDesc added to all 8 locales Co-authored-by: Psychotoxical <dev@psysonic.app> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
committed by
GitHub
parent
fb02b62a54
commit
76ed6eca55
@@ -49,7 +49,7 @@ interface AuthState {
|
||||
excludeAudiobooks: boolean;
|
||||
customGenreBlacklist: string[];
|
||||
replayGainEnabled: boolean;
|
||||
replayGainMode: 'track' | 'album';
|
||||
replayGainMode: 'track' | 'album' | 'auto';
|
||||
replayGainPreGainDb: number; // added to RG gain for tagged files (0…+6 dB)
|
||||
replayGainFallbackDb: number; // gain for untagged files / radio (-6…0 dB)
|
||||
crossfadeEnabled: boolean;
|
||||
@@ -200,7 +200,7 @@ interface AuthState {
|
||||
setExcludeAudiobooks: (v: boolean) => void;
|
||||
setCustomGenreBlacklist: (v: string[]) => void;
|
||||
setReplayGainEnabled: (v: boolean) => void;
|
||||
setReplayGainMode: (v: 'track' | 'album') => void;
|
||||
setReplayGainMode: (v: 'track' | 'album' | 'auto') => void;
|
||||
setReplayGainPreGainDb: (v: number) => void;
|
||||
setReplayGainFallbackDb: (v: number) => void;
|
||||
setCrossfadeEnabled: (v: boolean) => void;
|
||||
@@ -308,7 +308,7 @@ export const useAuthStore = create<AuthState>()(
|
||||
excludeAudiobooks: false,
|
||||
customGenreBlacklist: [],
|
||||
replayGainEnabled: false,
|
||||
replayGainMode: 'track',
|
||||
replayGainMode: 'auto',
|
||||
replayGainPreGainDb: 0,
|
||||
replayGainFallbackDb: 0,
|
||||
crossfadeEnabled: false,
|
||||
|
||||
Reference in New Issue
Block a user