FluidSynth Changelog

What's new in FluidSynth 2.3.3

Jun 14, 2023
  • Fix choppy sound when selecting pipewire output (#1230, thanks to @nilninull)
  • Fix build issues on musl-based distros (#1229)
  • Terminate MIDI player once internal synth-ticks overflow to prevent filling up the filesystem (#1233)
  • Fix a bug that allowed playing notes outside of key and velocity ranges (#1250)

New in FluidSynth 2.3.2 (Apr 2, 2023)

  • Add support for processing all SysEx messages with synth.device-id=127.
  • Various fixes to linking against static libfluidsynth when consumed through CMake or pkg-config.
  • Added fluid_player_get_division.
  • Fix a regression introduced in 2.3.1 which broke MIDI player's seamless looping.

New in FluidSynth 2.3.1 (Dec 29, 2022)

  • Prevent MIDI player from finishing prematurely (#1159, thanks to @topaz)
  • Fix a crash when enumerating rawmidi ALSA devices (#1174, thanks to @Bob131)
  • Restore systemd sandboxing options and make it work with user units (#1181, thanks to @bluca)
  • Handle conflict with pipewire systemd daemon (#1177)

New in FluidSynth 2.3.0 (Sep 21, 2022)

  • New Features:
  • Add Pipewire audio driver (#982, thanks to @sykhro)
  • Major modernization of the CMake build system, CMake >= 3.13 will now be required (#969, thanks to @pedrolcl)
  • Add multi-channel output for the CoreAudio driver (#1081, thanks to @mattrtaylor)
  • LADSPA effects are mixed before processing internal effects (#1117, thanks to @albedozero)
  • MIDI auto-connect functionality has been extended (#1023, thanks to @pedrolcl)
  • Add linear interpolation to convex and concave transfer functions (#1156, thanks to @md1872b)
  • Mixing of effects has been parallelized (#1158)
  • Bug Fixes:
  • Issue #1073 has been resolved, which may change the sound articulation a bit (#1152)
  • Systemd Hardening has been partly reverted (#1147, thanks to @dvzrv)
  • audio.jack.autoconnect erroneously connectd to MIDI ports (#1149, thanks to @ReinholdH)
  • Fix build when compiling against OSS 4.0 API (#1150)

New in FluidSynth 2.2.9 (Sep 6, 2022)

  • Fix regression in WinMIDI driver introduced in 2.2.8 (#1131, #1141 thanks to @albedozero)
  • Tracks cannot be restarted in MIDI player after reaching EOT (#1138, thanks to @albedozero)
  • Add a system-wide configuration file for Windows (#1143, thanks to @daniel-1964)
  • Harden systemd service file
  • Dependency libs for precompiled Android binaries have been updated

New in FluidSynth 2.2.8 (Jul 10, 2022)

  • ALSA and WinMIDI drivers now pass system real-time messages on to user callback
  • Fix FPU division by zero in fluid_player_set_tempo()
  • Fix system-wide config file not loaded
  • Pluseaudio driver now honors audio.periods setting

New in FluidSynth 2.2.7 (Apr 26, 2022)

  • Fix file driver not working correctly on Windows (#1076)
  • Add a function to create a sequencer event from a midi event (#1078, thanks to @jimhen3ry)
  • Precompiled x86 binaries are now x87-FPU compatible (#1079)
  • Fix fluidsynth not responding to SIGINT and SIGTERM when using recent SDL2 (#1071, thanks to @mawe42)

New in FluidSynth 2.2.6 (Mar 21, 2022)

  • Undeprecation and minor revisal of the OSS driver (#1038)
  • Minor improvements to CoreAudio and CoreMidi drivers (#1047, thanks to @bradhowes)
  • Fix sustained voices being held after ALL_CTRL_OFF (#1049)
  • Fix clobbering of PORTAMENTO_CTRL after ALL_CRTL_OFF (#1050)
  • Prevent Modulation Envelope from being stuck in decay phase, causing detuned voices and potentially other audible glitches for some soundfonts (#1059)
  • Fix a compilation issue with recent glib (#1063, thanks to @devingryu)

New in FluidSynth 2.2.5 (Jan 24, 2022)

  • Fix a build failure with CMake < 3.12 (#1003, thanks to @komh)
  • OSS and MidiShare drivers are now deprecated (#1010)
  • Prevent samples accidentally having their loops disabled (#1017)
  • Fix framework installation on MacOS (#1029, thanks to @pedrolcl)

New in FluidSynth 2.2.4 (Nov 21, 2021)

  • Per-channel ALL_SOUND_OFF when seeking/stopping player (#980, thanks to @albedozero)
  • Fix windows related encoding problems (#984, thanks to @tsingakbar)
  • Rewind playlist when calling fluid_player_play after all loops are complete (#994, thanks to @albedozero)
  • Fix MinGW related static linking issues (#990, thanks to @realnc)

New in FluidSynth 2.2.3 (Sep 12, 2021)

  • FluidSynth did not build on macOS 10.5 and earlier (#946, thanks to @evanmiller)
  • Fix build with CMake <3.7 (#944, thanks to @komh)
  • Fix a NULL dereference in delete_fluid_ladspa_effect() (#963)

New in FluidSynth 2.2.2 (Aug 4, 2021)

  • The MIDI router now handles out-of-range parameters in a smarter manner (#891, thanks to @jjceresa)
  • Keep pedaling effective when the same note is played more than once (#905, thanks to @jjceresa)
  • Select soundfont samples by frequency instead of midi note numbers (#926, thanks to @Naturseptime)
  • Fix the sequencer's event ordering for NoteOn vel=0 events (#907)
  • libfluidsynth's import library was broken for MinGW builds (#874)
  • fluidsynth.exe short option -Q not working (#915, thanks to @pedrolcl)
  • Precompiled Android binaries didn't work (#894, #897)
  • Fix openMP detection for XCode 12.5 (#917)
  • Make audio.jack.autoconnect connect all available ports (#920)
  • Prevent MIDI Player from continuously suppressing notes (#935, thanks to @albedozero)
  • fluidsynth.pc now includes private libraries for static linking (#904)
  • Fix typos in code and documentation (#939, thanks to @luzpaz)

New in FluidSynth 2.2.1 (Aug 4, 2021)

  • Make ALSA the default driver on Linux (#878)
  • Coreaudio driver failed to initialize on MacOS 11 (#803, thanks to @ringoz)
  • WaveOut driver failed to initialize (#873, thanks to @carlo-bramini)
  • COM initialization in WASAPI driver is no longer performed in the caller's context (#839, thanks to @pedrolcl)
  • WASPI driver now supports reverb and chorus (#836, thanks to @chirs241097)
  • Handle SysEx GM/GM2 mode on, GS reset, and XG reset (#877, thanks to @kode54)
  • Old behaviour of fluid_player_join has been restored to prevent infinite loop in client code (#872)
  • The Soundfont loader code has been refactored, illegal generators will now be skipped more consequently (#823, thanks to @mawe42)

New in FluidSynth 2.2.0 (Aug 4, 2021)

  • New features:
  • Support loading SoundFonts >2GiB on Windows (#629)
  • Major overhaul of the sequencer and its event queue (#604)
  • Overlapping notes can be handled (#637)
  • Performance improvement, since the event queue no longer blocks the rendering thread
  • Time scale is not limited to 1000 anymore and can therefore be used for tempo changes
  • The following audio drivers have gained multi-channel support
  • DSound (#667, thanks to @jjceresa)
  • WaveOut (#667, thanks to @jjceresa)
  • The WinMIDI driver supports multiple devices (#677, thanks to @jjceresa)
  • Handle GS DT1 SysEx messages for setting whether a channel is used for rhythm part (#708, thanks to @chirs241097)
  • Support use of UTF-8 filenames under Windows (#718, thanks to @getraid-gg)
  • Improved support for overriding tempo of the MIDI player (#711, #713, thanks to @jjceresa)
  • Handle settings-related commands in user command file before initializing other objects (#739)
  • SoundFont loading has been parallelized (#746, #812, requires openMP)
  • The Oboe driver has gained a lower latency and other updates (#740, #741, #747)
  • WASAPI driver has been added (#754, thanks to @chirs241097)
  • General:
  • Fix race condition in fluid_player_callback (#783, thanks to @arcln)
  • Improvements to LADSPA subsystem (#795, thanks to @mawe42)

New in FluidSynth 1.1.6 (Aug 16, 2012)

  • Handle MIDI End of track events, ticket #101
  • Prevent broken rendering after an voice overflow, ticket #100
  • Enable long arguments where available
  • Windows: Install fluidsynth.pc (pkg-config spec), ticket #102
  • Mac OS X Lion: Fix build failure, ticket #105
  • Linux: Prevent libdbus crash

New in FluidSynth 1.1.5 (Aug 16, 2012)

  • Autotools build resulted in the wrong version number for libfluidsynth.so
  • One symbol was dropped from libfluidsynth.so - this symbol was not part of the public API though.
  • Windows 64 bit: Wrong prototype declaration for MIDI
  • JACK: Using jack_free instead of free when needed. Note that this might require a later version of JACK than previously.
  • Update Free Software Foundation address

New in FluidSynth 1.1.4 (Aug 4, 2011)

  • Enhancements and API additions:
  • Add playback callback from the MIDI file player for intercepting MIDI data on playback.
  • Use glib utility function for shell parsing (ticket #44)
  • Allow in-memory midi file to be loaded by the midi engine
  • fluid_synth_all_notes_off and fluid_synth_all_sounds_off can now silence all channels at once, and are now public API functions.
  • Allow channels to change state between melodic and drum channels
  • support for "audio.coreaudio.device" option in Mac OSX CoreAudio driver
  • Mac CoreAudio driver adapted to AuHAL
  • Build system enhancements and fixes
  • Preliminary support for creating in MacOSX a "FluidSynth.framework"
  • Platform dependent options scoped to only the relevant platform
  • CMake build system fix: unset the variables created by check_pkg_modules() allowing to disable optional features that were formerly enabled
  • CMake build system fix for ticket #90: install dirs configurable
  • New macro: unset_pkg_config()
  • The unset() command requires CMake 2.6.3 or newer
  • fixed creation of the file "fluidsynth.pc", using the new *_INSTALL_DIR variables
  • removed the deprecated macro "CreateLibtoolFile" (unused)
  • renamed LT_VERSION_* variables as LIB_VERSION_*
  • build system fixes for OS/2
  • Don't enable PortAudio support by default
  • Fix CoreAudio build problem
  • fix for ticket #97 : Latest fluid_midi.c fails to build under MSVC 2010
  • gcc flags again: -Wno-vla removed because it is not supported by an Apple compiler
  • avoid to output a wrong error message
  • new GCC warning flag, trying to avoid a common MSVC unsupported C language construct
  • Build documentation instructions
  • Mac OSX fixes: frameworks build, midi.coremidi.id option.
  • Bug fixes (misc):
  • Do not use loop noise floor if sample continues in release phase (ticket #93)
  • Prevent the IIR filter from loud pops on quick frequency changes (ticket #82)
  • Fix memory leak causing soundfonts not to be deleted in delete_fluid_synth
  • Fix incorrect samplerate for reverb and chorus (ticket #89)
  • Empty event queue from non-realtime context on startup, prevents timeout
  • Allow sample rates down to 8 kHz
  • Fix for bug with duplicate sample names in SoundFont files
  • Ignore extra size in SoundFont smpl chunk so that FluidSynth can load 24 bit SoundFont files as 16 bit, rather than rejecting the file.
  • Better message when substituting presets, and store XG LSB changes even in drum mode.
  • Fix notes slightly off pitch (with floats and short loops)
  • fix for bug "Undefined behavior parsing a MIDI file which unexpectedly ends" (ticket #92)
  • Code cleanup / refactoring:
  • Code cleanup, and remove unnecessary atomicy and shadow variables, now that the new architecture is in place
  • Rewrite overflow so that an extra rvoice is used
  • Fixed warning in fluid_synth.c
  • Add out-of-memory checks to fluid_player_add and fluid_player_add_mem
  • reformat fluid_midi.c source according to the coding style.

New in FluidSynth 1.1.3 (Aug 4, 2011)

  • Compilation with LADSPA enabled was broken in 1.1.2 - fixed
  • Multichannel output broken when double precision was used - fixed
  • Doxygen settings
  • Mac OS X build system fixes
  • Fix build problem with scummvm
  • Optimize by not starting unused threads with multicore rendering
  • Window handle creation/destruction in Windows dll version
  • Race condition in alsa_seq / alsa_raw drivers caused them not to qui

New in FluidSynth 1.1.2 (Aug 4, 2011)

  • Big changes:
  • New CMake build system [plcl]
  • Winbuild and Macbuild directories dropped
  • Autotools build system is deprecated, but is still working
  • Rewriting of thread safety [diwic]
  • Two new settings control the thread safety mode. The default is to be backwards compatible.
  • Smaller changes:
  • Voice overflow settings [diwic]
  • Possible to update polyphony, up to 65536 (and beyond initial setting) [diwic]
  • Possible to update sample rate (jack driver updates sample rate correctly) [diwic]
  • MIDI Bank Select handling fixed [plcl]
  • Source files moved into different subdirectories [diwic]
  • Can use RealTimeKit (on Linux) to get real-time priority [diwic]
  • Shell commands for pitch bend and pitch bend range [monk]
  • PulseAudio driver: specify media role, and allow pulseaudio to adjust latency [diwic]
  • Bug fixes [diwic, plcl, KO Myung hun, Felix Krause, laurent, nshepperd]

New in FluidSynth 1.1.1 (Aug 4, 2011)

  • Bug fixes:
  • Recommit fix for voice stealing algorithm
  • Update deltatime on midi file load, ticket #59 (
  • Build fix on OS X 10.4
  • Fixed most asynchronous assignment/query regressions affecting QSynth (chorus, reverb, polyphony, MIDI CCs and presets)
  • Reverted queuing of chorus and reverb assignments which fixes real-time performance issues when changing values
  • Fixed issue with audio thread changes affecting CoreAudio on OS X
  • Improved SMP safety with CC MIDI controls, polyphony, modulators and synth gain
  • Fixed crash bugs in fluid_timer functions
  • Reverted char * -> const char * changes to function prototypes
  • Fixed TCP server build issue where WITHOUT_SERVER was still being set on win32
  • Fixed crash when Jack driver was re-created
  • Fixed unknown macro warning in FluidSynth man page
  • Misc:
  • Return queue process is now a thread instead of a timer and more responsive
  • Added missing dist files in doc/
  • Updated README-OSX
  • Changes affecting developers
  • New fluid_synth_get_channel_info() function for a thread safe way of getting channel preset info
  • New fluid_synth_unset_program() function to unset a channel preset assignment
  • Marked fluid_synth_get_channel_preset() as deprecated
  • Developer API docs updated

New in FluidSynth 1.1.0 (Aug 4, 2011)

  • Features and improvements:
  • Extensive work on making FluidSynth more thread safe, resulting in better stability.
  • Audio file rendering for MIDI to audio file conversion, faster than realtime (#15).
  • Optional libsndfile support for file rendering in different audio file formats (wav, flac, ogg vorbis, etc) (#30).
  • Audio and MIDI are synchronized for MIDI file playback.
  • Server can be specified for Jack audio and MIDI drivers.
  • Jack audio and MIDI is now synchronized (when same Jack server used).
  • MIDI file playback is now timed correctly, even with large audio buffer sizes.
  • Fixed issue with missing percussion in MIDI files caused by very short notes, using synth.min-note-length setting (#1).
  • Improved support for MIDI tuning standard, including SYSEX support and realtime tuning activation.
  • Multi-core support for utilizing multiple CPUs for synthesis or increasing speed of file rendering.
  • Voices for a note-on event are started synchronously (#46).
  • TCP/IP shell server support for windows (#20).
  • Improved settings output (-o help) (alphabetically sorted and string options listed).
  • Audio driver (-a) and MIDI driver (-m) options now accept "help" and list available options (#41).
  • Added audio.realtime-prio and midi.realtime-prio for controlling realtime scheduling of some audio and MIDI drivers.
  • Default priority levels of audio and MIDI threads set to 60 and 50 respectively.
  • All yes/no string boolean settings converted to integer toggle settings (with backwards compatibility).
  • glib is now a required dependency.
  • Updated README-OSX
  • Added "voice_count" shell command for getting current number of active voices.
  • New command line options
  • F, --fast-render=[file]
  • T, --audio-file-type
  • O, --audio-file-format
  • E, --audio-file-endian
  • New or changed parameters
  • Audio file output settings: audio.file.endian, audio.file.format, audio.file.name, audio.file.type, audio.sample-format
  • Realtime scheduling settings: audio.realtime-prio, midi.realtime-prio
  • Jack settings: audio.jack.server and midi.jack.server
  • Other settings: player.reset-synth, player.timing-source, synth.cpu-cores (experimental), synth.min-note-length
  • Bug fixes and minor changes
  • Fixed enabling of high priority scheduling in many audio drivers.
  • Fixed bank selection logic
  • Build fixes for mingw and VC++ builds on Windows
  • Fix default values (after MIDI reset) to be more consistent with MIDI spec (#29).
  • Removed VintageDreamsWaves?-v2.sf2 since it wasn't under a free license.
  • Solaris build fix (#52)
  • Implemented fluid_player_set_loop (#33)
  • Fixed scaletune error (#26)
  • Fixed synth reset between songs (#31)
  • Fixed pitch bend error in Windows MIDI driver (#54)
  • Skip remaining track data in MIDI file after EOT (#53)
  • Bug fix in MIDI router where mutex was left locked with MIDI system reset message.
  • Help command now shows list of topics instead of General help.
  • Fixed non-blocking in alsa_raw, alsa_seq and OSS MIDI drivers.
  • Fixed segfault on config file load (#45).
  • Changes affecting developers
  • Developer API docs overhauled and now very complete.
  • Lots of code cleanup in fluid_synth.c, fluid_chorus.c, fluid_reverb.c and fluid_chan.c.
  • Improved use of settings hints for all settings.
  • char * arguments changed to const char * for many function prototypes.
  • Many new API functions.

New in FluidSynth 1.0.9 (Aug 4, 2011)

  • Features and improvements:
  • New PulseAudio? driver
  • New Jack MIDI driver
  • New CoreMIDI driver
  • Portaudio driver re-written for Portaudio 19
  • Support for OS/2 including Dart audio driver
  • RPN GM MIDI messages now handled for Bend Range, Fine Tune and Coarse Tune
  • MIDI channel pressure now handled
  • MIDI Program/Bank instrument fallback selection logic
  • Added midi.portname setting to ALSA sequencer, -p command line switch
  • Added midi.winmidi.device setting to winmidi driver
  • Updated Max/MSP FluidSynth binding
  • Synthesis Changes:
  • Volume attenuation SoundFont generator now behaves more like EMU10K1
  • Stop forcing velocity based filtering
  • Fixes to linear/bipolar/positive and convex/bipolar/positive modulator functions
  • Added fix to properly search for percussion instrument
  • Force velocity envelope value to be that of the previous stage when switching from decay to sustain
  • Filter calculation now uses synthesizer sample rate rather than fixed at 44100
  • Bug fixes:
  • Fixed Jack driver in "audio.jack.multi=yes" mode and Jack audio driver cleanup
  • Wrong tempo changes
  • Crash bug fix related to using certain modulators in a preset
  • Fix to non-option command line argument processing when not using readline
  • dsound device can't be selected
  • Minor build fixes
  • Fixed compilation under MSVC 2008 and older
  • Misc. stuff
  • Updated README-OSX build instructions
  • FluidSynth fink package accepted for Mac OS X
  • Minor fixes to FluidSynth man page

New in FluidSynth 1.0.8 (Aug 4, 2011)

  • Features and improvements:
  • Improved synthesis interpolation (around loops for smoother looping, optimizations and improved flexibility)
  • Dithering on 16 bit converted output
  • Updated fluidmax plugin with polyphony parameter.
  • Improved ALSA audio and sequencer drivers.
  • Fixed some Floating Point Exceptions which were causing excessive CPU usage
  • Some fixes to Chorus and Reverb parameters
  • Bug fixes:
  • Looping/tuning problem when loop end close to end of sample
  • FluidSynth crashes with QSynth and audio meters turned on
  • ALSA sequencer driver no longer prints out false error messages
  • Many memory leaks plugged (thanks to Paul Millar for pointing out issues and providing some patches)
  • Warning message printed if a non option is not a valid SoundFont or MIDI file
  • Code cleanup other misc. stuff
  • Fixed Visual Studio Windows project files and other fixes to build on this platform
  • Removed broken SSE support.
  • Removed memory alignment hacks (no longer needed).
  • Function comments sprinkled throughout the code (not finished yet)
  • Updated fluidsynth man page.
  • Updated README-OSX
  • Added --enable-fpe-check and --enable-trap-on-fpe configure options to aid in Floating Point Exception debugging