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