Join GitHub today
GitHub is home to over 28 million developers working together to host and review code, manage projects, and build software together.Sign up
- implement auto-conntect for CoreMidi (#427, thanks to @ColinKinloch)
- fix a build issue with cmake < 3.3
- fix a crash when creating multiple jack drivers (#434, thanks to @rncbc)
- various fixes to dsound driver (#435, thanks to @carlo-bramini)
- fix multiple potential NULL dereferences (#437)
- fix two memory leaks in the soundfont loader (#437)
- correct upper threshold of
- implement polyphonic key pressure (#185, thanks to @mawe42)
- add API for manipulating default modulators (#265, #164, #71, thanks to @mawe42)
midi.autoconnectsetting for automatically connecting fluidsynth with available MIDI Input ports (currently only for
alsa_seqthanks to @tomcucinotta)
- add seek support to midi-player (#261, thanks to @loki666)
- add support for text and lyrics midi events (#111)
- add support for 24 bit sample soundfonts (#301, #329)
- consider "important midi channels" during overflow calculation
synth.overflow.important-channels(#294, thanks to @mawe42)
- add a custom default modulator for MIDI CC8 to support proper stereo balance (#317, thanks to @mawe42)
- add support for an additional custom high-pass filter (#331, thanks to @mawe42)
- incorporate JJC's polymono patch (#306, #236, #158)
- add basic channel support
- implement MIDI modes Omni On, Omni Off, Poly, Mono
- implement portamento control
- implement legato control
- implement breath control
- add support soundfont loading from memory (#241)
- add a profiling command interface (#345, thanks to @jjceresa)
- add support on demand sample loading (#366, thanks to @mawe42)
- add reverb and chorus settings (#49)
- allow using the midi router to manipulate midi files when playing from command line
fluid_synth_process()received a new proper implementation
synth.effects-groupsallows to render effects of all MIDI channels to separate audio channels
- CMake 3.1.0 or later is required for building
- consider channel pressure, key pressure and pitch wheel for lower attenuation boundary calculation (#163, thanks to @mawe42)
- complete rewrite of the LADSPA subsystem (#227, #235, thanks to @mawe42)
- complete rewrite of the Soundfont Loader API (#334, #309)
- avoid reverb amplitude growing exponentially (#279, thanks to @jjceresa)
- removed deprecated autotools build system
- a minimal build of fluidsynth without requiring pkg-config is supported
- remove deprecated LADCCA support
- use unique device names for the
audio.portaudio.devicesetting (#284, thanks to @jjceresa)
- documentation of the settings moved to http://www.fluidsynth.org/api/fluidsettings.xml
- adjust MIDI Pan and Balance calculations as outlined by MIDI Recommended Practice (RP-036) (#317, thanks to @mawe42)
- make network support compile-time optional (#307, thanks to @carlo-bramini)
- speed up calculation of chorus modulation waveforms for devices without FPU (#321, thanks to @carlo-bramini)
- cleanup internal audio rendering and mixing engine (#197)
- reduce memory consumption of loaded soundfonts (#370, thanks to @mawe42)
- fix pkgconfig file for absolute paths (#347, thanks to @krop)
- add a cmake option for OSS support (#350, thanks to @Ne01eX)
- fix broken
- fix double free in
fluid_midi_router(#352, thanks to @fulinux)
- prevent malicious soundfonts from causing buffer overflows (#354, thanks to @mawe42)
- avoid SF3 files to be loaded incorrectly (#354, thanks to @mawe42)
- fix an endless loop in fast file renderer (#367)
- avoid a buffer overrun when loading malformed soundfonts (#327)
synth.default-soundfontreturning incomplete path (#332)
- improve reliability of
fluid_is_soundfont()(thanks to Orcan Ogetbil)
- minor cmake adjustments for MSVC builds to enable building fluidsynth as vcpkg package (#333, #339, thanks to @stekyne)
- fix build issues against statically built fluidsynth library on all OSs (#341)
- cmake: prevent double usage of
- include windows version info in libfluidsynth.dll (#216, thanks to @harborsiem)
- enable jack midi driver to support more than 16 midi channels (#326)
- enable fluidsynth to be set up as systemd user service (#66, #342, thanks to @dvzrv)
- fix building the portaudio driver on Windows (thanks to @ReinholdH)
- fix build if no MIDI drivers are available (thanks to @carlo-bramini)
- fix return value of
fluid_file_set_encoding_quality()(thanks to @ReinholdH)
- fix use-after-free in fluid_timer
- fix memory leak in pulseaudio driver
- fix memory leak in rvoice_mixer (thanks to @mawe42)
dumptuningshell command displaying uninitialized values (thanks to @rmattes)
- fix a resource leak in
sourceshell command (thanks to @carlo-bramini)
- harmonize fluidsynth's output library naming with autotools on Windows (#271, thanks to @fabiangreffrath)
- dont set
LIB_SUFFIXwhen building with MinGW (#281, thanks to @fabiangreffrath)
- avoid a possible deadlock when initializing fluidsynths DLL on windows (#269, #286, thanks to @carlo-bramini and @jjceresa)
- avoid a buffer overrun when mixing effects channels in
- correctly clean up
fluid_serveron Windows (#304, thanks to @carlo-bramini)
- implement handling of
- support for registering audio drivers based on actual needs (#218)
Minor maintenance release to address some issues introduced with 1.1.7:
- fix build against glib < 2.30 (#202)
- fix dsound audio driver on windows (#215)
- fix a bug around
synth.audio-groupssetting, which caused improper multi-channel rendering (#225)
- cmake >= 3.0.2 is now required
- compilation with clang is now possible
- build fixes on OS/2 (thanks to @komh)
This is mainly considered to be a maintenance release, although it brings a few new features, see below. Note that this is expected to be the last release to ship the deprecated and unmaintained autotools build system! Make sure you check out how to build fluidsynth using CMake.
- consistently relicense libfluidsynth under LGPL-2.1+ (also addressing fluid_chorus.c, #165)
fluid_synth_set_channel_type()was not exported properly
- introduce visibility control of exported functions (ee54995fabd260f54862cc15c6118fabf8b8b216)
- Avoid memory allocation on program change
- fix calculations for modulators (#194)
- fix SysEx parsing issues (#127, #148, thanks to Erik Ronström and Stas Sergeev)
- fix mangling with illegal sample loops, causing audible glitches (#171, #149, thanks to @mawe42)
- fix inverse logic of audio.jack.multi option (#135)
- fix channel fine tune RPN to use correct range (#187, thanks to @mawe42)
- fix timing problems when changing the sequencers scale from a callback event (#195, thanks to @imhcyx)
- workaround incorrectly rendered audio when requesting more than 64 frames from
- adjust ALSA MIDI port type (#139)
- avoid voice_count becoming negative (#151, thanks to Jean-Jacques Ceresa)
- avoid notes with a fixed key generator playing forever (#159)
- avoid TCP/IP connections from closing in an undefined manner (b75c8fdb17f842592b7e5af1fb0ddefde7f351d2)
- a lot of memory leaks, NULL dereferences and SegFaults (thanks to Surabhi Mishra)
- fix build
- if EPIPE == ESTRPIPE (#133)
- for mingw32 by checking for inet_ntop() (#132)
- having lash support enabled
- for > VS2015 (#189, thanks to @stekyne)
- add support of vorbis-compressed sf3 sound fonts (#140, thanks to @fabiangreffrath)
- add sostenuto pedal to the synth (#47, #134, thanks to Jean-Jacques Ceresa)
- add vbr quality when encoding with libsndfile
- re-implement routing reverb and chorus to distinct buffers in
- add IPv6 support to socket API (#124)
- add default soundfont setting:
- allow sampledata sharing between different FluidSynth instances (thanks to @kmatheussen)
New API calls
- channel, key, velocity and state getter for
- tempo, bpm, total length and currentBeat getter for
fluid_player(#190, thanks to @quiasmo)
Fixes and changes
- Handle MIDI End of track events, ticket #100 (Matt Giuca)
- Prevent broken rendering after an voice overflow, ticket #99 (diwic)
- Enable long arguments where available (plcl)
- Windows: Install fluidsynth.pc (pkg-config spec), ticket #101 (plcl)
- Mac OS X Lion: Fix build failure, ticket #104 (twobits)
- Linux: Prevent libdbus crash (diwic)
Test results from the FluidSynth tester program
Tester Test Case Result
S Christian Collins SoundFont compatibility: Proper rendering of modulators, etc OK S Christian Collins Voice stealing logic OK S Christian Collins Reverb and chorus OK Sven Meier Windows build (using mingw-w64) OK Sven Meier OS X build Untested Bernd Casper jOrgan setup Untested Aere Greenway QSynth setup OK Aere Greenway Low memory and slow CPU environment OK Matt Giuca Linux build (using Ubuntu) OK Matt Giuca Fast rendering OK Matt Giuca FluidSynth as backend to DOSBox OK
This is a pure bug fix release compared to 1.1.4.
The following bugs are fixed:
- Autotools build resulted in the wrong version number for libfluidsynth.so (reported by plcl, Takashi Iwai)
- One symbol was dropped from libfluidsynth.so - this symbol was not part of the public API though. (reported by Alessio Treglia)
- Windows 64 bit: Wrong prototype declaration for MIDI (reported by Graham Goode)
- JACK: Using jack_free instead of free when needed. Note that this might require a later version of JACK than previously. (reported by Graham Goode)
- Update Free Software Foundation address (reported by ogetbilo)
Version 1.1.4 brings:
- Several improvements and fixes to the CMake build system, especially for Mac OS X
- Several bug fixes to the engine, notably quite a few which could cause [FluidSynth] to sound bad in some cases.
- API additions, that make it possible to
- load MIDI files from memory
- to inspect/modify MIDI events as they are being played from a MIDI file
- to change channels between melodic and drum mode
- and to silence all notes in one command.
- Improvements to the CoreAudio driver
(This is a summary of the commit log)
Enhancements and API additions
- Add playback callback from the MIDI file player for intercepting MIDI data on playback. [Jason Vasquez, plcl, diwic, etc]
- Use glib utility function for shell parsing (ticket #44) [diwic]
- Allow in-memory midi file to be loaded by the midi engine [Matt Giuca]
- fluid_synth_all_notes_off and fluid_synth_all_sounds_off can now silence all channels at once, and are now public API functions. [jimmy, diwic]
- Allow channels to change state between melodic and drum channels [jimmy]
- support for "audio.coreaudio.device" option in Mac OSX CoreAudio driver [plcl]
- Mac CoreAudio driver adapted to AuHAL [plcl]
Build system enhancements and fixes
- Preliminary support for creating in MacOSX a "[FluidSynth].framework" [plcl]
- Platform dependent options scoped to only the relevant platform [plcl]
- CMake build system fix: unset the variables created by check_pkg_modules() allowing to disable optional features that were formerly enabled [plcl]
- CMake build system fix for ticket #90: install dirs configurable [plcl]
- New macro: unset_pkg_config() [plcl]
- The unset() command requires CMake 2.6.3 or newer [plcl]
- fixed creation of the file "fluidsynth.pc", using the new *_INSTALL_DIR variables [plcl]
- removed the deprecated macro "CreateLibtoolFile" (unused) [plcl]
- renamed LT_VERSION_* variables as LIB_VERSION_* [plcl]
- build system fixes for OS/2 [KO Myung-Hun]
- Don't enable PortAudio support by default [plcl]
- Fix CoreAudio build problem [plcl, reported by Sven Meier]
- fix for ticket #97 : Latest fluid_midi.c fails to build under MSVC 2010 [plcl]
- gcc flags again: -Wno-vla removed because it is not supported by an Apple compiler [plcl]
- avoid to output a wrong error message [plcl]
- new GCC warning flag, trying to avoid a common MSVC unsupported C language construct [plcl]
- Build documentation instructions [plcl]
- Mac OSX fixes: frameworks build, midi.coremidi.id option. [plcl]
Bug fixes (misc)
- Do not use loop noise floor if sample continues in release phase (ticket #93) [diwic, reported by Graham Goode]
- Prevent the IIR filter from loud pops on quick frequency changes (ticket #82) [diwic]
- Fix memory leak causing soundfonts not to be deleted in delete_fluid_synth [diwic, reported by R\u0102\u0160mi Denis-Courmont]
- Fix incorrect samplerate for reverb and chorus (ticket #89) [jaz001]
- Empty event queue from non-realtime context on startup, prevents timeout [diwic, reported by Krysztof Foltman]
- Allow sample rates down to 8 kHz [diwic]
- Fix for bug with duplicate sample names in [SoundFont] files [jgreen]
- Ignore extra size in [SoundFont] smpl chunk so that [FluidSynth] can load 24 bit [SoundFont] files as 16 bit, rather than rejecting the file. [jgreen]
- Better message when substituting presets, and store XG LSB changes even in drum mode. [diwic]
- Fix notes slightly off pitch (with floats and short loops) [diwic]
- fix for bug "Undefined behavior parsing a MIDI file which unexpectedly ends" (ticket #92) [plcl, reported by Matt Giuca]
Code cleanup / refactoring
- Code cleanup, and remove unnecessary atomicy and shadow variables, now that the new architecture is in place [diwic]
- Rewrite overflow so that an extra rvoice is used [diwic]
- Fixed warning in fluid_synth.c [plcl]
- Add out-of-memory checks to fluid_player_add and fluid_player_add_mem [diwic]
- reformat fluid_midi.c source according to the coding style. [plcl]
FluidSynth 1.1.3 is a pure bug-fix release and contains no new functionality.
- Compilation with LADSPA enabled was broken in 1.1.2 - fixed (plcl, diwic)
- Multichannel output broken when double precision was used - fixed (plcl, diwic)
- Doxygen settings (plcl)
- Mac OS X build system fixes (plcl, Benjamin Reed, Jean-Fran\u00e7ois Mertens)
- Fix build problem with scummvm (Alexander Hansen, Ebrahim Mayat)
- Optimize by not starting unused threads with multicore rendering (diwic)
- Window handle creation/destruction in Windows dll version (Andy Fillebrown)
- Race condition in alsa_seq / alsa_raw drivers caused them not to quit (diwic)
- Only free example papers online for students
- 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.
- 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]
For a complete list of changes, please see the svn commit log.
FluidSynth 1.1.1 - "Clarity"
Changes from previous version 1.1.0
- Recommit fix for voice stealing algorithm (David Henningsson)
- Update deltatime on midi file load, ticket #59 (David Henningsson and Josh Green, reported by Hans Petter Selasky)
- Build fix on OS X 10.4 (David Fang and Ebrahim Mayat)
- Fixed most asynchronous assignment/query regressions affecting QSynth (chorus, reverb, polyphony, MIDI CCs and presets) (Josh Green, reports and testing by Rui Nuno Capela)
- Reverted queuing of chorus and reverb assignments which fixes real-time performance issues when changing values (Josh Green)
- Fixed issue with audio thread changes affecting CoreAudio on OS X (Josh Green, reported by Ebrahim Mayat)
- Improved SMP safety with CC MIDI controls, polyphony, modulators and synth gain (Josh Green)
- Fixed crash bugs in fluid_timer functions (Josh Green)
- Reverted char * -> const char * changes to function prototypes (Josh Green, reported by Rui Nuno Capela)
- Fixed TCP server build issue where WITHOUT_SERVER was still being set on win32 (Josh Green)
- Fixed crash when Jack driver was re-created (Josh Green)
- Fixed unknown macro warning in FluidSynth man page (David Henningsson)
- Return queue process is now a thread instead of a timer and more responsive (Josh Green)
- Added missing dist files in doc/ (Josh Green)
- Updated README-OSX (Ebrahim Mayat)
Changes affecting developers
- New fluid_synth_get_channel_info() function for a thread safe way of getting channel preset info (Josh Green)
- New fluid_synth_unset_program() function to unset a channel preset assignment (Josh Green)
- Marked fluid_synth_get_channel_preset() as deprecated (Josh Green)
- Developer API docs updated
See "Whats new in 1.1.1?" section in developer API documentation for more details:
- Josh Green
- David Henningsson
- Rui Nuno Capela
- Ebrahim Mayat
- David Fang
- Hans Petter Selasky
FluidSynth 1.1.0 - "A More Solid Fluid"
Changes from previous version 1.0.9
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.
See "Whats new in 1.1.0?" section in developer API documentation for more details:
- Josh Green
- David Henningsson
- Pedro Lopez-Cabanillas
- Ebrahim Mayat
And many others!
FluidSynth 1.0.9 - "A Sound Future"
Changes from previous version 1.0.8
Features and improvements
- New PulseAudio? driver (Josh Green)
- New Jack MIDI driver (Josh Green)
- New CoreMIDI driver (Pedro Lopez-Cabanillas)
- Portaudio driver re-written for Portaudio 19 (Josh Green)
- Support for OS/2 including Dart audio driver (KO Myung-Hun)
- RPN GM MIDI messages now handled for Bend Range, Fine Tune and Coarse Tune (Josh Green)
- MIDI channel pressure now handled (Bernat Arlandis i Ma\u00f1\u00f3)
- MIDI Program/Bank instrument fallback selection logic (Josh Green and thanks also to Jimmy)
- Added midi.portname setting to ALSA sequencer, -p command line switch (Nicolas Boulicault)
- Added midi.winmidi.device setting to winmidi driver (Pedro Lopez-Cabanillas)
- Updated Max/MSP [FluidSynth] binding (Norbert Schnell)
- Volume attenuation [SoundFont] generator now behaves more like EMU10K1 (S. Christian Collins)
- Stop forcing velocity based filtering (S. Christian Collins)
- Fixes to linear/bipolar/positive and convex/bipolar/positive modulator functions (S. Christian Collins)
- Added fix to properly search for percussion instrument (Josh Green)
- Force velocity envelope value to be that of the previous stage when switching from decay to sustain (S. Christian Collins)
- Filter calculation now uses synthesizer sample rate rather than fixed at 44100 (S. Christian Collins)
- Fixed Jack driver in "audio.jack.multi=yes" mode and Jack audio driver cleanup (Bernat Arlandis i Ma\u00f1\u00f3 and Pedro Lopez-Cabanillas)
- Wrong tempo changes (ticket #22 \- Pedro Lopez-Cabanillas)
- Crash bug fix related to using certain modulators in a preset (S. Christian Collins)
- Fix to non-option command line argument processing when not using readline (Pedro Lopez-Cabanillas)
- dsound device can't be selected (Ticket #16 \- Pedro Lopez-Cabanillas)
- Minor build fixes (Josh Green)
- Fixed compilation under MSVC 2008 and older (Pedro Lopez-Cabanillas)
- Updated README-OSX build instructions (Ebrahim Mayat)
- [FluidSynth] fink package accepted for Mac OS X (Ebrahim Mayat)
- Minor fixes to [FluidSynth] man page (Sven Hoexter)
FluidSynth 1.0.8 - "Its about funky time!"
Changes from previous version 1.0.7a
Features and improvements
- Improved synthesis interpolation (around loops for smoother looping, optimizations and improved flexibility)
- Dithering on 16 bit converted output (thanks to Mihail Zenkov for noting the problem and providing patches)
- 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 (thanks to David Hilvert for noting problems and providing patches)
- Looping/tuning problem when loop end close to end of sample (Ticket #4 \- Thanks to Tomas Nykung for reporting and providing example SoundFonts).
- FluidSynth crashes with QSynth and audio meters turned on (Ticket #5 \- Thanks to David Hilvert for reporting)
- 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 (thanks to Nick Daly for the patch).
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 (from Ebrahim Mayat)
- Added --enable-fpe-check and --enable-trap-on-fpe configure options to aid in Floating Point Exception debugging