diff --git a/app/src/main/java/org/oxycblt/auxio/IntegerTable.kt b/app/src/main/java/org/oxycblt/auxio/IntegerTable.kt
index 54d59eb50..271de0969 100644
--- a/app/src/main/java/org/oxycblt/auxio/IntegerTable.kt
+++ b/app/src/main/java/org/oxycblt/auxio/IntegerTable.kt
@@ -102,7 +102,7 @@ object IntegerTable {
/** Sort.Mode.ByDateAdded */
const val SORT_BY_DATE_ADDED = 0xA118
/** ReplayGainMode.Off (No longer used but still reserved) */
- // const val REPLAY_GAIN_MODE_OFF = 0xA110
+ const val REPLAY_GAIN_MODE_OFF = 0xA110
/** ReplayGainMode.Track */
const val REPLAY_GAIN_MODE_TRACK = 0xA111
/** ReplayGainMode.Album */
diff --git a/app/src/main/java/org/oxycblt/auxio/playback/replaygain/ReplayGain.kt b/app/src/main/java/org/oxycblt/auxio/playback/replaygain/ReplayGain.kt
index 5a19c7df3..012bdfce3 100644
--- a/app/src/main/java/org/oxycblt/auxio/playback/replaygain/ReplayGain.kt
+++ b/app/src/main/java/org/oxycblt/auxio/playback/replaygain/ReplayGain.kt
@@ -29,6 +29,8 @@ import org.oxycblt.auxio.R
* @author Alexander Capehart (OxygenCobalt)
*/
enum class ReplayGainMode {
+ /** Do not apply any ReplayGain adjustments. */
+ OFF,
/** Apply the track gain, falling back to the album gain if the track gain is not found. */
TRACK,
/** Apply the album gain, falling back to the track gain if the album gain is not found. */
@@ -45,6 +47,7 @@ enum class ReplayGainMode {
*/
fun fromIntCode(intCode: Int) =
when (intCode) {
+ IntegerTable.REPLAY_GAIN_MODE_OFF -> OFF
IntegerTable.REPLAY_GAIN_MODE_TRACK -> TRACK
IntegerTable.REPLAY_GAIN_MODE_ALBUM -> ALBUM
IntegerTable.REPLAY_GAIN_MODE_DYNAMIC -> DYNAMIC
diff --git a/app/src/main/java/org/oxycblt/auxio/playback/replaygain/ReplayGainAudioProcessor.kt b/app/src/main/java/org/oxycblt/auxio/playback/replaygain/ReplayGainAudioProcessor.kt
index c94f32ae5..09168842d 100644
--- a/app/src/main/java/org/oxycblt/auxio/playback/replaygain/ReplayGainAudioProcessor.kt
+++ b/app/src/main/java/org/oxycblt/auxio/playback/replaygain/ReplayGainAudioProcessor.kt
@@ -119,6 +119,11 @@ constructor(
// ReplayGain is configurable, so determine what to do based off of the mode.
val resolvedAdjustment =
when (playbackSettings.replayGainMode) {
+ // User wants no adjustment.
+ ReplayGainMode.OFF -> {
+ logD("ReplayGain is off")
+ null
+ }
// User wants track gain to be preferred. Default to album gain only if
// there is no track gain.
ReplayGainMode.TRACK -> {
diff --git a/app/src/main/res/values/settings.xml b/app/src/main/res/values/settings.xml
index f5c45132a..49dbceebd 100644
--- a/app/src/main/res/values/settings.xml
+++ b/app/src/main/res/values/settings.xml
@@ -139,12 +139,14 @@
+ - @string/set_replay_gain_mode_off
- @string/set_replay_gain_mode_track
- @string/set_replay_gain_mode_album
- @string/set_replay_gain_mode_dynamic
+ - @integer/replay_gain_off
- @integer/replay_gain_track
- @integer/replay_gain_album
- @integer/replay_gain_dynamic
@@ -161,6 +163,7 @@
0xA122
0xA124
+ 0xA110
0xA111
0xA112
0xA113
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 5a465a49c..e4431dacd 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -290,8 +290,9 @@
Pause when a song repeats
Remember pause
Remain playing/paused when skipping or editing queue
- ReplayGain
+ Volume normalization
ReplayGain strategy
+ Off
Prefer track
Prefer album
Prefer album if one is playing