diff --git a/src/music/fluidsynth.cpp b/src/music/fluidsynth.cpp index d1088f4bc426c..778b244e8c63a 100644 --- a/src/music/fluidsynth.cpp +++ b/src/music/fluidsynth.cpp @@ -149,7 +149,11 @@ bool MusicDriver_FluidSynth::IsSongPlaying() void MusicDriver_FluidSynth::SetVolume(byte vol) { /* Allowed range of synth.gain is 0.0 to 10.0 */ - if (fluid_settings_setnum(_midi.settings, "synth.gain", 1.0 * vol / 128.0) != 1) { + /* fluidsynth's default gain is 0.2, so use this as "full + volume". Set gain using OpenTTD's volume, as a number between 0 + and 0.2. */ + double gain = (1.0 * vol) / (128.0 * 5.0); + if (fluid_settings_setnum(_midi.settings, "synth.gain", gain) != 1) { DEBUG(driver, 0, "Could not set volume"); } }