diff --git a/NEWS b/NEWS
index a1aee15b9..4aaa75ca2 100644
--- a/NEWS
+++ b/NEWS
@@ -5,6 +5,7 @@ ver 0.17.2 (2012/??/??)
   - fluidsynth: remove throttle (requires libfluidsynth 1.1)
   - fluidsynth: stop playback at end of file
   - fluidsynth: check MIDI file format while scanning
+  - fluidsynth: add sample rate setting
 * output:
   - httpd: use monotonic clock, avoid hiccups after system clock adjustment
   - httpd: fix throttling bug after resuming playback
diff --git a/doc/user.xml b/doc/user.xml
index bb83674db..13a2c738f 100644
--- a/doc/user.xml
+++ b/doc/user.xml
@@ -834,6 +834,15 @@ systemctl start mpd.socket</programlisting>
               </row>
             </thead>
             <tbody>
+              <row>
+                <entry>
+                  <varname>sample_rate</varname>
+                </entry>
+                <entry>
+                  The sample rate that shall be synthesized by the
+                  plugin.  Defaults to 48000.
+                </entry>
+              </row>
               <row>
                 <entry>
                   <varname>soundfont</varname>
diff --git a/src/decoder/fluidsynth_decoder_plugin.c b/src/decoder/fluidsynth_decoder_plugin.c
index ed0efdd99..894b2d353 100644
--- a/src/decoder/fluidsynth_decoder_plugin.c
+++ b/src/decoder/fluidsynth_decoder_plugin.c
@@ -19,6 +19,7 @@
 
 #include "config.h"
 #include "decoder_api.h"
+#include "audio_check.h"
 #include "conf.h"
 
 #include <glib.h>
@@ -28,6 +29,7 @@
 #undef G_LOG_DOMAIN
 #define G_LOG_DOMAIN "fluidsynth"
 
+static unsigned sample_rate;
 static const char *soundfont_path;
 
 /**
@@ -69,6 +71,15 @@ fluidsynth_mpd_log_function(int level, char *message, G_GNUC_UNUSED void *data)
 static bool
 fluidsynth_init(const struct config_param *param)
 {
+	GError *error = NULL;
+
+	sample_rate = config_get_block_unsigned(param, "sample_rate", 48000);
+	if (!audio_check_sample_rate(sample_rate, &error)) {
+		g_warning("%s\n", error->message);
+		g_error_free(error);
+		return false;
+	}
+
 	soundfont_path =
 		config_get_block_string(param, "soundfont",
 					"/usr/share/sounds/sf2/FluidR3_GM.sf2");
@@ -82,11 +93,6 @@ fluidsynth_init(const struct config_param *param)
 static void
 fluidsynth_file_decode(struct decoder *decoder, const char *path_fs)
 {
-	static const struct audio_format audio_format = {
-		.sample_rate = 48000,
-		.format = SAMPLE_FORMAT_S16,
-		.channels = 2,
-	};
 	char setting_sample_rate[] = "synth.sample-rate";
 	/*
 	char setting_verbose[] = "synth.verbose";
@@ -104,7 +110,7 @@ fluidsynth_file_decode(struct decoder *decoder, const char *path_fs)
 	if (settings == NULL)
 		return;
 
-	fluid_settings_setnum(settings, setting_sample_rate, 48000);
+	fluid_settings_setnum(settings, setting_sample_rate, sample_rate);
 
 	/*
 	fluid_settings_setstr(settings, setting_verbose, setting_yes);
@@ -158,6 +164,8 @@ fluidsynth_file_decode(struct decoder *decoder, const char *path_fs)
 	/* initialization complete - announce the audio format to the
 	   MPD core */
 
+	struct audio_format audio_format;
+	audio_format_init(&audio_format, sample_rate, SAMPLE_FORMAT_S16, 2);
 	decoder_initialized(decoder, &audio_format, false, -1);
 
 	while (fluid_player_get_status(player) == FLUID_PLAYER_PLAYING) {