LinuxCommandLibrary

fluidsynth

Plays MIDI files using SoundFont synthesizers

TLDR

Play a MIDI file

$ fluidsynth [/usr/share/soundfonts/soundfont.sf2] [path/to/file.midi]
copy

Specify the audio driver
$ fluidsynth [[-a|--audio-driver]] [pipewire|pulseaudio] [/usr/share/soundfonts/soundfont.sf2] [path/to/file.midi]
copy

Display help
$ fluidsynth [[-h|--help]]
copy

SYNOPSIS

fluidsynth [-options] [[sf2file]] [[midifile]]

PARAMETERS

-h, --help
    Show summary of options

-V, --version
    Show version information

-a drv, --audio-driver=dry
    Audio driver (alsa, pulseaudio, jack, oss, coreaudio, dsound, wasapi, file)

-m drv, --midi-driver=dry
    MIDI driver (alsa_seq, winmidi)

-o name=value
    Set any parameter (e.g., synth.sample-rate=48000, synth.reverb.enable=yes)

-j, --jack
    Connect to JACK MIDI and audio (implies -m jack -a jack)

-l, --load-config
    Load ~/.fluidsynthrc config file

-r n, --sample-rate=n
    Set sample rate (default 48000)

-g f, --gain=f
    Set global gain (0.0-10.0, default 0.2)

-c n, --chorus-channels=n
    Chorus channels (1-99, default 3)

-R, --no-shell
    Disable interactive shell

-F file, --record=file
    Record audio to WAV file

-T, --text-mode
    MIDI player text output

--server
    Run as standalone server

-i, --no-midi-alsa
    Don't open ALSA sequencer client

-n, --no-audio
    No audio driver (shell only)

-p port, --port=port
    Listen on TCP port for connections

DESCRIPTION

FluidSynth is a real-time software synthesizer based on the SoundFont 2 (SF2/SF3) specifications and Audio Synthesis API. It renders MIDI input data to audio output using SoundFont-compatible sample-based instruments, supporting multi-timbral playback with up to 256 channels.

Primarily a command-line tool, it reads MIDI events from files, ALSA sequencer ports, or stdin, and outputs audio via drivers like ALSA, PulseAudio, JACK, or OSS. It features an interactive shell for runtime control (e.g., loading patches, adjusting volume, routing MIDI), LADSPA effects support, and server mode for networked MIDI synthesis.

Ideal for embedded systems, headless servers, or scripting, FluidSynth offers low-latency synthesis without hardware synths. It processes polyphony efficiently on modern CPUs but may require tuning for high channel counts. Configuration via ~/.fluidsynthrc or command-line options enables customization of sample rates, reverb/chorus, and drivers. Widely used in Linux audio workflows for playback, live performance, and as a backend for apps like Qsynth or Rosegarden.

CAVEATS

High CPU usage with dense polyphony; requires SoundFont files (e.g., FluidR3_GM.sf2); no built-in GUI—use Qsynth; ALSA latency tunable via ~./asoundrc; server mode insecure without firewall.

INTERACTIVE SHELL

Enter shell with fluidsynth; commands: help, load path/to/sf2, inst 0 12 (program change), vol 0 127, quit.

EXAMPLE USAGE

fluidsynth -a alsa -m alsa_seq ~/soundfonts/FluidR3_GM.sf2 song.mid
fluidsynth --server -a jack -m jack (server mode).

HISTORY

Developed by Josh Green in 1999 as a ZynAddSubFX component, FluidSynth became standalone in 2000. Version 1.0 released 2004; 2.0 (2015) added 24-bit/64-bit support, threaded synthesis. Maintained by Werner Schweer et al., now at v2.3+ with AVB, plugin support. Key in open-source audio since LinuxSampler era.

SEE ALSO

timidity(1), aplaymidi(1), aconnect(1), jackd(1), ladspa(7)

Copied to clipboard