diff options
author | Torbjörn Andersson | 2012-12-27 15:08:54 +0100 |
---|---|---|
committer | Johannes Schickel | 2013-01-26 13:36:37 +0100 |
commit | 681f81211f25c4c9fc163e0ec4d005f796da547d (patch) | |
tree | 57a893f07f4cda13ec7ecc79f9a3cd1e993fa96a /audio | |
parent | 0b72bd2dea0cfea13ab03dc74361aea7ac95c997 (diff) | |
download | scummvm-rg350-681f81211f25c4c9fc163e0ec4d005f796da547d.tar.gz scummvm-rg350-681f81211f25c4c9fc163e0ec4d005f796da547d.tar.bz2 scummvm-rg350-681f81211f25c4c9fc163e0ec4d005f796da547d.zip |
FLUIDSYNTH: Add separate dialog for FluidSynth settings
I don't really understand what these parameters do, or what the
sensible values are, so for now the sliders are limited only by
the allowed (or, in one case, "safe") values.
Diffstat (limited to 'audio')
-rw-r--r-- | audio/softsynth/fluidsynth.cpp | 42 |
1 files changed, 37 insertions, 5 deletions
diff --git a/audio/softsynth/fluidsynth.cpp b/audio/softsynth/fluidsynth.cpp index 2451336784..71187200dc 100644 --- a/audio/softsynth/fluidsynth.cpp +++ b/audio/softsynth/fluidsynth.cpp @@ -127,12 +127,44 @@ int MidiDriver_FluidSynth::open() { _synth = new_fluid_synth(_settings); - // In theory, this ought to reduce CPU load... but it doesn't make any - // noticeable difference for me, so disable it for now. + int chorusNr = ConfMan.getInt("fluidsynth_chorus_nr"); + double chorusLevel = (double)ConfMan.getInt("fluidsynth_chorus_level") / 100.0; + double chorusSpeed = (double)ConfMan.getInt("fluidsynth_chorus_speed") / 100.0; + double chorusDepthMs = (double)ConfMan.getInt("fluidsynth_chorus_depth") / 100.0; + + Common::String chorusWaveForm = ConfMan.get("fluidsynth_chorus_waveform"); + int chorusType = FLUID_CHORUS_MOD_SINE; + if (chorusWaveForm == "sine") { + chorusType = FLUID_CHORUS_MOD_SINE; + } else { + chorusType = FLUID_CHORUS_MOD_TRIANGLE; + } + + fluid_synth_set_chorus_on(_synth, 1); + fluid_synth_set_chorus(_synth, chorusNr, chorusLevel, chorusSpeed, chorusDepthMs, chorusType); + + double reverbRoomSize = (double)ConfMan.getInt("fluidsynth_reverb_roomsize") / 100.0; + double reverbDamping = (double)ConfMan.getInt("fluidsynth_reverb_damping") / 100.0; + double reverbWidth = (double)ConfMan.getInt("fluidsynth_reverb_width") / 10.0; + double reverbLevel = (double)ConfMan.getInt("fluidsynth_reverb_level") / 100.0; + + fluid_synth_set_reverb_on(_synth, 1); + fluid_synth_set_reverb(_synth, reverbRoomSize, reverbDamping, reverbWidth, reverbLevel); + + Common::String interpolation = ConfMan.get("fluidsynth_misc_interpolation"); + int interpMethod = FLUID_INTERP_4THORDER; + + if (interpolation == "none") { + interpMethod = FLUID_INTERP_NONE; + } else if (interpolation == "linear") { + interpMethod = FLUID_INTERP_LINEAR; + } else if (interpolation == "4th") { + interpMethod = FLUID_INTERP_4THORDER; + } else if (interpolation == "7th") { + interpMethod = FLUID_INTERP_7THORDER; + } - // fluid_synth_set_interp_method(_synth, -1, FLUID_INTERP_LINEAR); - // fluid_synth_set_reverb_on(_synth, 0); - // fluid_synth_set_chorus_on(_synth, 0); + fluid_synth_set_interp_method(_synth, -1, interpMethod); const char *soundfont = ConfMan.get("soundfont").c_str(); |