Changes:
- Make ALSA the default driver on Linux
- Coreaudio driver failed to initialize on MacOS 11
- WaveOut driver failed to initialize
- COM initialization in WASAPI driver is no longer performed in the caller's context
- WASPI driver now supports reverb and chorus
- Handle SysEx GM/GM2 mode on, GS reset, and XG reset
- Old behaviour of fluid_player_join has been restored to prevent infinite loop in client code
- The Soundfont loader code has been refactored, illegal generators will now be skipped more consequently
This release breaks ABI compatibility! Refer to the API docs for details.
A C++98 compliant compiler is now required to build fluidsynth (mailing list thread)
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)
- Rapidly changing channel panning could have caused audible artifacts. Affects all versions back to at least 1.1.2.
- Fix a use-after-free when loading malformed soundfonts. Affects all versions back to at least 1.1.2.
- The number of allowed LADSPA effect units has been increased.
a regression introduced in 2.1.0 prevented chorus from being audible when fluid_synth_process() was used (#751, thanks to @chirs241097)
a regression introduced in 2.0.6 prevented the MIDI player from restarting playback after all files have been played (#755, thanks to @rncbc)
fix a double-free violation introduced in 2.0.0 after executing the info shell command (#756)
SoundFonts may never be unloaded correctly, if
polyphony is ever exceeded (#727), or
voices are still playing while their SoundFont is being unloaded.
Calling delete_fluid_synth() does not free those SoundFonts either. Affected are versions from 1.1.4 to 2.1.5 .
Other bug-fixes:
fix a heap-based use-after-free (#733)
Changes:
fix an uninitialized memory access possibly triggering an FPE trap
fix several regressions introduced in 2.1.3:
fluid_synth_start() failed for certain presets
fix a NULL dereference in jack driver
fix a stack-based overflow when creating the synth
Changes:
- fix a cross-compilation failure from Win32 to WinARM
- fix issues while fluid_player is seeking
- fix a NULL pointer dereference if synth.dynamic-sample-loading is enabled
- fix a NULL pointer dereference in delete_rvoice_mixer_threads()
- fix a NULL pointer dereference in the soundfont loader
- fix dsound driver playing garbage when terminating fluidsynth
- avoid memory leaks when using libinstpatch
pkgsrc changes:
- Add dbus and ladspa options
- Build with ladspa support on BSD and Linux
- Don't build with SDL2 audio backend on Darwin
Changelog:
- fluidsynth now exits with error when user-provided command-line arguments are out-of-range
- add verbose error logging to opensles and oboe drivers
- fix a memory leak in oboe driver
- fix a NULL dereference in the fluidsynth commandline program
Changes:
- a regression introduced in 2.1.0 caused the jack audio driver to not correct a sample-rate mismatch (#607)
- pkg-config is now being to used to find readline (#606, thanks to @ffontaine)
- fix various typos in the documentation (#600, thanks to @luzpaz)
- fix a memory leak in the file renderer
- fix leaking memory when sequencer clients were not explicitly unregistered (#610)
- fix a heap-based use-after-free in jack driver (#613)
- fix the linker possibly not finding libinstpatch (#617, thanks to @realnc)
New features
new, less "ringing" reverb engine (#380, thanks to @jjceresa)
new, stereophonic chorus engine (#548, thanks to @jjceresa)
support for Downloadable Sounds (DLS) files was added (#320, requires libinstpatch)
improved integrity checking of SoundFont modulators (#467, thanks to @jjceresa)
rendering to stdout is now possible (#553, thanks to @mawe42)
the following Audio Drivers have been added:
Oboe (#464, tested on Android, thanks to @atsushieno)
OpenSLES (#464, tested on Android, thanks to @atsushieno)
SDL2 (#478, thanks to @carlo-bramini)
WaveOut (#466, tested on Win98, WinNT4.0, WinXP, thanks to @carlo-bramini)
various performance improvements (#543, #545, #547, #569, #573)
Bug fixes
generator modEnvAttack now has a convex shape according to SoundFont spec (#153)
the default MIDI Pitch Wheel to Initial Pitch modulator now uses Fine Tune as destination generator, allowing it to be overridden by the soundfont designer (#154, thanks to @jjceresa)
Changes:
- an implicitly declared function caused a pointer to int truncation in CoreAudio driver (#591)
- fix a stack-based overflow in CoreAudio driver (#594, thanks to @fkmclane)
Switched to github for upstream, build system now uses cmake.
Changes in major release 2.0.0:
New Features
implement polyphonic key pressure (#185, thanks to @mawe42)
add API for manipulating default modulators (#265, #164, #71, thanks to @mawe42)
add midi.autoconnect setting for automatically connecting fluidsynth with available MIDI Input ports (currently only for alsa_seq thanks 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-groups allows to render effects of all MIDI channels to separate audio channels
General
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.device setting (#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)
Problems found with existing distfiles:
/pub/pkgsrc/distfiles/amp-0.7.6.tgz
/pub/pkgsrc/distfiles/freeswitch/freeswitch-sounds-music-32000-1.0.8.tar.gz
/pub/pkgsrc/distfiles/freeswitch/freeswitch-sounds-music-48000-1.0.8.tar.gz
/pub/pkgsrc/distfiles/freeswitch/freeswitch-sounds-en-us-callie-32000-1.0.22.tar.gz
/pub/pkgsrc/distfiles/freeswitch/freeswitch-sounds-en-us-callie-48000-1.0.22.tar.gz
/pub/pkgsrc/distfiles/freeswitch/freeswitch-sounds-fr-ca-june-32000-1.0.18.tar.gz
/pub/pkgsrc/distfiles/freeswitch/freeswitch-sounds-fr-ca-june-48000-1.0.18.tar.gz
/pub/pkgsrc/distfiles/freeswitch/freeswitch-sounds-ru-RU-elena-16000-1.0.12.tar.gz
/pub/pkgsrc/distfiles/freeswitch/freeswitch-sounds-ru-RU-elena-32000-1.0.12.tar.gz
/pub/pkgsrc/distfiles/freeswitch/freeswitch-sounds-ru-RU-elena-48000-1.0.12.tar.gz
/pub/pkgsrc/distfiles/freeswitch/freeswitch-sounds-ru-RU-elena-8000-1.0.12.tar.gz
/pub/pkgsrc/distfiles/freeswitch/freeswitch-sounds-fr-ca-june-32000-1.0.18.tar.gz
/pub/pkgsrc/distfiles/freeswitch/freeswitch-sounds-fr-ca-june-48000-1.0.18.tar.gz
/pub/pkgsrc/distfiles/freeswitch/freeswitch-sounds-ru-RU-elena-32000-1.0.13.tar.gz
/pub/pkgsrc/distfiles/freeswitch/freeswitch-sounds-ru-RU-elena-48000-1.0.13.tar.gz
/pub/pkgsrc/distfiles/kid3-3.3.0.tar.gz
/pub/pkgsrc/distfiles/libdca-0.0.5.tar.bz2
/pub/pkgsrc/distfiles/mp3to.gz
/pub/pkgsrc/distfiles/squeezeboxserver-7.5.1-noCPAN.tgz
No changes made to these file.
Otherwise, existing SHA1 digests verified and found to be the same on
the machine holding the existing distfiles (morden). All existing
SHA1 digests retained for now as an audit trail.
are replaced with .include "../../devel/readline/buildlink3.mk", and
USE_GNU_READLINE are removed,
* .include "../../devel/readline/buildlink3.mk" without USE_GNU_READLINE
are replaced with .include "../../mk/readline.buildlink3.mk".
Fluidsynth was redefining a properly-defined macro to null based on an
apparently flawed assumption. Add a condition to check if the macro is
defined before redefining.
This modified patch may fix more than just DragonFly.
Fixes and changes
Handle MIDI End of track events, ticket #101 (Matt Giuca)
Prevent broken rendering after an voice overflow, ticket #100 (diwic)
Enable long arguments where available (plcl)
Windows: Install fluidsynth.pc (pkg-config spec), ticket #102 (plcl)
Mac OS X Lion: Fix build failure, ticket #105 (twobits)
Linux: Prevent libdbus crash (diwic)
pkgsrc: Not switched to cmake, no libaudiofile dependency.
1.1.5:
* 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)
1.1.4:
* 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
1.1.3:
* 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-Franc,ois 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)
1.1.2:
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]
1.1.1:
Bug fixes
* 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)
Misc
* 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)
1.1.0:
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).
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ñó)
* 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)
Synthesis Changes
* 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)
Bug fixes
* Fixed Jack driver in "audio.jack.multi=yes" mode and Jack
audio driver cleanup (Bernat Arlandis i Mañó 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)
Misc. stuff
* 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)
This changes the buildlink3.mk files to use an include guard for the
recursive include. The use of BUILDLINK_DEPTH, BUILDLINK_DEPENDS,
BUILDLINK_PACKAGES and BUILDLINK_ORDER is handled by a single new
variable BUILDLINK_TREE. Each buildlink3.mk file adds a pair of
enter/exit marker, which can be used to reconstruct the tree and
to determine first level includes. Avoiding := for large variables
(BUILDLINK_ORDER) speeds up parse time as += has linear complexity.
The include guard reduces system time by avoiding reading files over and
over again. For complex packages this reduces both %user and %sys time to
half of the former time.