FluidSynth

FluidSynth is a built-in software MIDI synthesiser that uses SoundFont (.sf2) sample banks to generate audio. Unlike Sound Canvas emulation, it does not attempt to replicate any specific hardware device --- instead, the character of the music depends entirely on which SoundFont you load. This makes it very flexible but also means results vary: a good SoundFont can sound close to an SC-55 on many games, while a poor one can sound noticeably wrong.

FluidSynth is lighter on CPU than Sound Canvas emulation and is a good option when you don't have SC-55 ROMs or when you prefer a particular SoundFont's character.

For background on the General MIDI standard and help deciding which MIDI device to use for a particular game, see the MIDI overview.

SoundFont setup

Download a SoundFont file and place it in the soundfonts directory inside your DOSBox configuration folder:

PlatformSoundFont directory
WindowsC:\Users\<USERNAME>\AppData\Local\dosbox-automation\soundfonts\
macOS~/Library/Preferences/dosbox-automation/soundfonts/
Linux~/.config/dosbox-automation/soundfonts/

Then set the soundfont option to the filename (the .sf2 extension can be omitted):

[midi]
mididevice = fluidsynth

[fluidsynth]
soundfont = GeneralUser-GS

GeneralUser GS is the best all-round choice for DOS gaming. It offers well-balanced instruments, good General MIDI and GS compatibility, and consistently pleasant results across a wide range of games. This is what we recommend for most users.

Other options worth trying:

  • FluidR3_GM_GS --- Comes bundled with MuseScore. Fairly close to SC-55 character on many titles, though some instruments can sound thin.
  • Creative 4MB GM/GS/MT (4GMGSMT.SF2) - The SoundFont shipped with Creative Labs AWE32/AWE64 sound cards. A nostalgic choice that approximates SC-55 characteristics, though at a lower sample quality.

Tip

Some SoundFonts are louder or quieter than others. Use the soundfont_volume setting to normalize the volume, or append a percentage to the soundfont value (e.g., soundfont = Arachno 40 to reduce it to 40%).

Tip

You can switch SoundFonts on the fly by changing the soundfont setting while FluidSynth is active - no restart needed. Changing any [fluidsynth] setting takes effect immediately and triggers a SoundFont reload.

For a hands-on walkthrough of setting up FluidSynth with a specific game, see the Star Wars: Dark Forces chapter of the getting started guide.

SoundFont locations

If soundfont_dir is set, dosbox-automation searches that directory first. Otherwise, it searches the following directories for SoundFont files (in order):

Windows

  1. %LOCALAPPDATA%\DOSBox\soundfonts\
  2. C:\soundfonts\

macOS

  1. ~/Library/Preferences/dosbox-automation/soundfonts/
  2. ~/Library/Audio/Sounds/Banks/

Linux

  1. $XDG_DATA_HOME/dosbox/soundfonts/ (defaults to ~/.local/share/dosbox/soundfonts/)
  2. $XDG_DATA_HOME/soundfonts/ (defaults to ~/.local/share/soundfonts/)
  3. $XDG_DATA_HOME/sounds/sf2/ (defaults to ~/.local/share/sounds/sf2/)
  4. $XDG_DATA_DIRS/soundfonts/ (defaults to /usr/local/share/soundfonts/ and /usr/share/soundfonts/)
  5. $XDG_DATA_DIRS/sounds/sf2/ (defaults to /usr/local/share/sounds/sf2/ and /usr/share/sounds/sf2/)
  6. $XDG_CONFIG_HOME/dosbox/soundfonts/ (defaults to ~/.config/dosbox-automation/soundfonts/)

Reverb and chorus

The fsynth_reverb and fsynth_chorus settings apply reverb and chorus effects within the FluidSynth synthesiser engine itself, before the audio reaches the DOSBox mixer. This is separate from the mixer-level reverb and chorus effects, which are applied after mixing to all audio channels. The FluidSynth effects only affect MIDI playback through FluidSynth.

The default auto mode applies optimized reverb and chorus settings for the following SoundFonts (detected by filename or embedded metadata):

All other SoundFonts get sensible default reverb and chorus settings. You can disable the FluidSynth effects and rely on the mixer-level effects instead, use both together, or fine-tune with custom parameters.

Portamento handling

MIDI portamento (pitch glides between notes) behaves differently on the Roland SC-55 and FluidSynth. The SC-55 uses a concave portamento curve; FluidSynth now emulates this correctly using an xg-gs portamento time mode. Earlier versions suppressed portamento messages entirely because FluidSynth's linear portamento curve made certain game music sound out of tune (the level 8 music from Descent was a well-known example).

Mixer channel

FluidSynth outputs to the FSYNTH mixer channel.

Configuration settings

FluidSynth settings are to be configured in the [fluidsynth] section.

soundfont

Name or path of SoundFont file to use (default.sf2 by default). The SoundFont will be looked up in the following locations in order:

  • The user-defined SoundFont directory (see soundfont_dir)
  • The soundfonts directory in your DOSBox configuration directory
  • Other common system locations

The .sf2 extension can be omitted. You can use paths relative to the above locations or absolute paths as well.

Note

Run MIXER /LISTMIDI to see the list of available SoundFonts.

soundfont_dir

Extra user-defined SoundFont directory (unset by default). If set, SoundFonts are looked up in this directory first, then in the standard system locations.

soundfont_volume

Set the SoundFont's volume as a percentage (100 by default). This is useful for normalising the volume of different SoundFonts. Valid range is 1 to 800.

fsynth_reverb

Configure the FluidSynth reverb.

Possible values:

  • auto (default) -- Automatically apply optimized settings for common SoundFonts, or enable reverb with the default settings for all other SoundFonts.
  • on -- Enable reverb.
  • off -- Disable reverb.
  • <custom> -- Custom setting via four space-separated values: room-size (0.0--1.0), damping (0.0--1.0), width (0.0--100.0), and level (0.0--1.0). For example: 0.61 0.23 0.76 0.56

Note

You can disable the FluidSynth reverb and enable the mixer-level reverb on the FluidSynth channel instead, or enable both reverb effects at the same time.

fsynth_chorus

Configure the FluidSynth chorus.

Possible values:

  • auto (default) -- Automatically apply optimized settings for common SoundFonts, or enable chorus with the default settings for all other SoundFonts.
  • on -- Always enable chorus.
  • off -- Disable chorus.
  • <custom> -- Custom setting via five space-separated values: voice-count (0--99), level (0.0--10.0), speed in Hz (0.1--5.0), depth (0.0--21.0), and modulation-wave (sine or triangle). For example: 3 1.2 0.3 8.0 sine

Note

You can disable the FluidSynth chorus and enable the mixer-level chorus on the FluidSynth channel instead, or enable both chorus effects at the same time.

fsynth_filter

Filter for the FluidSynth audio output.

Possible values:

  • off (default) -- Don't filter the output.
  • <custom> -- Custom filter definition; see Custom filter settings for details.