FluidSynth - a SoundFont synthesizer
Contents
Description
FluidSynth is a real-time MIDI synthesizer based on the SoundFont(R) 2 specifications. It can be used to
render MIDI input or MIDI files to audio. The MIDI events are read from a MIDI device. The sound is
rendered in real-time to the sound output device.
The easiest way to start the synthesizer is to give it a SoundFont on the command line: 'fluidsynth
soundfont.sf2'. fluidsynth will load the SoundFont and read MIDI events from the default MIDI device
using the default MIDI driver. Once FluidSynth is running, it reads commands from the stdin. There are
commands to send MIDI events manually, to load or unload SoundFonts, and so forth. All the available
commands are discussed below.
FluidSynth can also be used to play a list of MIDI files. Simply run FluidSynth with the SoundFont and
the list of MIDI files to play. In this case you might not want to open the MIDI device to read external
events. Use the -n option to deactivate MIDI input. If you also want to deactivate the use of the
shell, start FluidSynth with the -i option: 'fluidsynth -ni soundfont.sf2 midifile1.mid midifile2.mid'.
Run fluidsynth with the --help option to check for changes in the list of options.
Disclaimer
SoundFont(R) is a registered trademark of E-mu Systems, Inc.
Feb 2, 2025 FluidSynth(1)
Name
FluidSynth - a SoundFont synthesizer
Options
fluidsynth accepts the following options:
-a,--audio-driver=[label]
The audio driver to use. "-a help" to list valid options
-c,--audio-bufcount=[count]
Number of audio buffers
-C,--chorus
Turn the chorus on or off [0|1|yes|no, default = on]
-d,--dump
Dump incoming and outgoing MIDI events to stdout
-E,--audio-file-endian
Audio file endian for fast rendering or aufile driver ("-E help" for list)
-f,--load-config
Load command configuration file (shell commands)
-F,--fast-render=[file]
Render MIDI file to raw audio data and store in [file]
-g,--gain
Set the master gain [0 < gain < 10, default = 0.2]
-G,--audio-groups
Defines the number of LADSPA audio nodes
-h,--help
Print out this help summary
-i,--no-shell
Don't read commands from the shell [default = yes]
-j,--connect-jack-outputs
Attempt to connect the jack outputs to the physical ports
-K,--midi-channels=[num]
The number of midi channels [default = 16]
-L,--audio-channels=[num]
The number of stereo audio channels [default = 1]
-m,--midi-driver=[label]
The name of the midi driver to use. "-m help" to list valid options.
-n,--no-midi-in
Don't create a midi driver to read MIDI input events [default = yes]
-o Define a setting, -o name=value ("-o help" to dump current values)
-O,--audio-file-format
Audio file format for fast rendering or aufile driver ("-O help" for list)
-p,--portname=[label]
Set MIDI port name (alsa_seq, coremidi drivers)
-q,--quiet
Do not print welcome message or other informational output
-r,--sample-rate
Set the sample rate
-R,--reverb
Turn the reverb on or off [0|1|yes|no, default = on]
-s,--server
Start FluidSynth as a server process
-T,--audio-file-type
Audio file type for fast rendering or aufile driver ("-T help" for list)
-v,--verbose
Print out verbose messages about midi events (synth.verbose=1) as well as other debug messages
-V,--version
Show version of program
-z,--audio-bufsize=[size]
Size of each audio buffer
Settings
The settings to be specified with -o are documented in the fluidsettings.xml hopefully shipped with this
distribution or online at https://www.fluidsynth.org/api/fluidsettings.xml . We recommend viewing this
file in a webbrowser, favourably Firefox.
Shell Commands
GENERALhelp Prints out list of help topics (type "help <topic>" to view details on available commands)
quit Quit the synthesizer
SOUNDFONTSloadfilename[reset][bankofs]
Load a SoundFont onto the SoundFont stack. If reset is 1 (which is the implicit default), all
currently in-use SoundFont presets will be re-evaluated with the newly loaded SoundFont taken into
account. Optionally, you can specify a non-zero bank offset for the new SoundFont. For example
the command load soundfont.sf2 0 10 will load the soundfont.sf2 with a bank offset of 10 without
re-evaluating the presets.
unloadnumber
Unload a SoundFont. The number is the index of the SoundFont on the stack.
fonts Lists the current SoundFonts on the stack
instnumber
Print out the available instruments for the SoundFont.
MIDIMESSAGESnoteonchannelkeyvelocity
Send a note-on event
noteoffchannelkey
Send a note-off event
ccchannelctrlvalue
Send a control change event
progchannum
Send program-change message
selectchansfontbankprog
Combination of bank-select and program-change
channels
Print out the presets of all channels.
AUDIOSYNTHESISgainvalue
Set the master gain (0 < gain < 5)
interpnum
Choose interpolation method for all channels
interpcchannum
Choose interpolation method for one channel
REVERBsetsynth.reverb.active[0|1]
Turn the reverb on or off
setsynth.reverb.room-sizenum
Change reverb room size
setsynth.reverb.dampnum
Change reverb damping
setsynth.reverb.widthnum
Change reverb width
setsynth.reverb.levelnum
Change reverb level
CHORUSsetsynth.chorus.active[0|1]
Turn the chorus on or off
setsynth.chorus.nrn
Use n delay lines (default 3)
setsynth.chorus.levelnum
Set output level of each chorus line to num
setsynth.chorus.speednum
Set mod speed of chorus to num (Hz)
setsynth.chorus.depthnum
Set chorus modulation depth to num (ms)
MIDIROUTERrouter_default
Reloads the default MIDI routing rules (input channels are mapped 1:1 to the synth)
router_clear
Deletes all MIDI routing rules.
router_begin[note|cc|prog|pbend|cpress|kpress]
Starts a new routing rule for events of the given type
router_chanminmaxmuladd
Limits the rule for events on min <= chan <= max. If the channel falls into the window, it is
multiplied by 'mul', then 'add' is added.
router_par1minmaxmuladd
Limits parameter 1 (for example note number in a note events). Similar to router_chan.
router_par2minmaxmuladd
Limits parameter 2 (for example velocity in a note event). Similar to router_chan
router_end
Finishes the current rule and adds it to the router.
Routerexamples
router_clear
router_begin note
router_chan 0 7 0 15
router_end
Will accept only note events from the lower 8 MIDI channels. Regardless of the channel, the
synthesizer plays the note on ch 15 (synthchannel=midichannel*0+15)
router_begin cc
router_chan 0 7 0 15
router_par1 1 1 0 64
router_add
Configures the modulation wheel to act as sustain pedal (transforms CC 1 to CC 64 on the lower 8
MIDI channels, routes to ch 15)
Synopsis
fluidsynth [options] [ SoundFonts ] [ midifiles ]
