From 1ff666dd127b1290921b0aeacb59a46e29528b78 Mon Sep 17 00:00:00 2001 From: vfsfitvnm Date: Tue, 21 Jun 2022 23:08:39 +0200 Subject: [PATCH] Add switch to disable volume normalization --- .../vimusic/services/PlayerService.kt | 18 ++++++++++-------- .../screens/settings/PlayerSettingsScreen.kt | 19 +++++++++---------- .../it/vfsfitvnm/vimusic/utils/Preferences.kt | 1 + 3 files changed, 20 insertions(+), 18 deletions(-) diff --git a/app/src/main/kotlin/it/vfsfitvnm/vimusic/services/PlayerService.kt b/app/src/main/kotlin/it/vfsfitvnm/vimusic/services/PlayerService.kt index 460d8d9..8a3cce3 100644 --- a/app/src/main/kotlin/it/vfsfitvnm/vimusic/services/PlayerService.kt +++ b/app/src/main/kotlin/it/vfsfitvnm/vimusic/services/PlayerService.kt @@ -304,15 +304,17 @@ class PlayerService : MediaSessionService(), MediaSession.Callback, MediaNotific } private fun normalizeVolume() { - player.volume = player.currentMediaItem?.mediaId?.let { mediaId -> - songPendingLoudnessDb.getOrElse(mediaId) { - player.currentMediaItem?.mediaMetadata?.extras?.getFloat("loudnessDb") - } - ?.takeIf { it > 0 } - ?.let { loudnessDb -> - (1f - (0.01f + loudnessDb / 15)).coerceIn(0.1f, 1f) + if (preferences.volumeNormalization) { + player.volume = player.currentMediaItem?.mediaId?.let { mediaId -> + songPendingLoudnessDb.getOrElse(mediaId) { + player.currentMediaItem?.mediaMetadata?.extras?.getFloat("loudnessDb") } - } ?: 1f + ?.takeIf { it > 0 } + ?.let { loudnessDb -> + (1f - (0.01f + loudnessDb / 15)).coerceIn(0.1f, 1f) + } + } ?: 1f + } } override fun onAddMediaItems( diff --git a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/settings/PlayerSettingsScreen.kt b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/settings/PlayerSettingsScreen.kt index 829b7ff..1b0445b 100644 --- a/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/settings/PlayerSettingsScreen.kt +++ b/app/src/main/kotlin/it/vfsfitvnm/vimusic/ui/screens/settings/PlayerSettingsScreen.kt @@ -248,16 +248,6 @@ fun PlayerSettingsScreen() { ) } -// SwitchSettingEntry( -// title = "Persistent queue", -// text = "Save and restore playing songs", -// isChecked = preferences.persistentQueue, -// onCheckedChange = { -// preferences.persistentQueue = it -// }, -// isEnabled = false -// ) - SwitchSettingEntry( title = "Skip silence", text = "Skip silent parts during playback", @@ -271,6 +261,15 @@ fun PlayerSettingsScreen() { } ) + SwitchSettingEntry( + title = "Loudness normalization", + text = "Lower the volume to a standard level", + isChecked = preferences.volumeNormalization, + onCheckedChange = { + preferences.volumeNormalization = it + } + ) + SettingsEntry( title = "Equalizer", text = "Interact with the system equalizer", diff --git a/app/src/main/kotlin/it/vfsfitvnm/vimusic/utils/Preferences.kt b/app/src/main/kotlin/it/vfsfitvnm/vimusic/utils/Preferences.kt index eb40f90..fad2b12 100644 --- a/app/src/main/kotlin/it/vfsfitvnm/vimusic/utils/Preferences.kt +++ b/app/src/main/kotlin/it/vfsfitvnm/vimusic/utils/Preferences.kt @@ -25,6 +25,7 @@ class Preferences(holder: SharedPreferences) : SharedPreferences by holder { var coilDiskCacheMaxSizeBytes by preference("coilDiskCacheMaxSizeBytes", 512L * 1024 * 1024) var exoPlayerDiskCacheMaxSizeBytes by preference("exoPlayerDiskCacheMaxSizeBytes", 512L * 1024 * 1024) var skipSilence by preference("skipSilence", false) + var volumeNormalization by preference("volumeNormalization", true) var yourPlaylistsGridRowCount by preference("yourPlaylistsGridRowCount", 2) }