libfluidsynth  2.3.5
Recent Changes

What's new in 2.3.2?

What's new in 2.2.7?

What's new in 2.2.0?

  • fluid_file_callbacks_t now uses long long as file-offset type (see fluid_long_long_t).This is a breaking change, which allows to load SoundFonts bigger than 2GiB on Windows. This change required to bump fluidsynth's SOVERSION.
  • various fluid_event_*() functions that received a "value" argument of type short now receive an int argument in preparation for MIDI 2.0 support
  • fluid_event_any_control_change() has been removed
  • the sequencer has received a major revisal. For you that means:
    • the sequencer's queue no longer blocks the synthesizer thread, due to being busy arranging its events internally.
    • events that share the same tick was given a new, documented order, see fluid_sequencer_send_at().
    • the sequencer's scale can now be used for arbitrary tempo changes. Previously, the scale of the sequencer was limited to 1000. The only limitation now is >0.
    • there is now a dedicated event type for changing the sequencer's time scale, see fluid_event_scale().
  • the dynamic-sample-loader has learned support to pin samples, see fluid_synth_pin_preset() and fluid_synth_unpin_preset()
  • added getter and setter functions for individual effect groups
  • support for UTF-8 filenames under Windows, see fluid_synth_sfload()
  • MIDI Tempo of the fluid_player can now be overridden, see fluid_player_set_tempo()
  • a per-tick callback has been added to the MIDI player, see fluid_player_set_tick_callback()
  • WASAPI audio driver is now available on Windows
  • the following drivers have gained support for new_fluid_audio_driver2():
    • DSound
    • WaveOut
    • WASAPI

What's new in 2.1.7?

  • a regression introduced in 2.1.0 prevented chorus from being audible when fluid_synth_process() was used

What's new in 2.1.4?

What's new in 2.1.1?

  • requirements for explicit sequencer client unregistering have been relaxed: delete_fluid_sequencer() now correctly frees any registered sequencer clients (clients can still be explicitly unregistered)
  • using the sequencer with the system timer as timing source has been deprecated

What's new in 2.1.0?

What's new in 2.0.8?

What's new in 2.0.7?

  • fluid_free() has been added to allow proper deallocation by programming languages other than C/C++

What's new in 2.0.6?

What's new in 2.0.5?

What's new in 2.0.3?

What's new in 2.0.2?

What's new in 2.0.0?

FluidSynths major version was bumped. The API was reworked, deprecated functions were removed.

Important changes that may not result in a compilation error but may cause your app to misbehave:

  • all public fluid_settings_* functions that return an integer which is not meant to be interpreted as bool consistently return either FLUID_OK or FLUID_FAILED
  • fluid_settings_setstr() cannot be used to set integer (toggle) settings with "yes" or "no" values anymore. Use fluid_settings_setint() instead, for example:
    fluid_settings_setint(settings, "synth.reverb.active", 0) instead of fluid_settings_setstr(settings, "synth.reverb.active", "no")
  • explicit client unregistering is required for fluid_sequencer_register_client() and fluid_sequencer_register_fluidsynth() (since fluidsynth 2.1.1 not required anymore, but still recommend)
  • all public functions consistently receive signed integers for soundfont ids, bank and program numbers
  • use unique device names for the audio.portaudio.device setting
  • fluid_synth_process() received a new more flexible implementation, but now requires zeroed-out sample buffers

Other changes in FluidSynth 2.0.0 concerning developers:

New Features and API additions:

API cleanups:

  • the ramsfont has been removed, because it is unmaintained and believed to be unused; please get in touch with the mailing list if you still need it
  • remove deprecated fluid_synth_get_channel_info() in favour of fluid_synth_get_program() and fluid_synth_get_channel_preset()
  • remove deprecated fluid_settings_getstr()
  • remove deprecated fluid_synth_set_midi_router(), instead supply the midi-router instance when creating a command handler with new_fluid_cmd_handler()
  • remove deprecated fluid_get_hinstance() and fluid_set_hinstance() (dsound driver now uses the desktop window)
  • remove deprecated fluid_synth_create_key_tuning(), use fluid_synth_activate_key_tuning(synth, bank, prog, name, pitch, FALSE) instead
  • remove deprecated fluid_synth_create_octave_tuning(), use fluid_synth_activate_octave_tuning(synth, bank, prog, name, pitch, FALSE) instead
  • remove deprecated fluid_synth_select_tuning(), use fluid_synth_activate_tuning(synth, chan, bank, prog, FALSE) instead
  • remove deprecated fluid_synth_reset_tuning(), use fluid_synth_deactivate_tuning(synth, chan, FALSE) instead
  • remove deprecated FLUID_HINT_INTEGER
  • remove deprecated fluid_synth_set_gen2() as there doesn't seem to be a use case for absolute generator values
  • remove deprecated "synth.parallel-render" setting
  • remove obsolete "audio.[out|in]put-channels" settings
  • remove unimplemented "synth.dump" setting
  • remove fluid_cmd_handler_register() and fluid_cmd_handler_unregister() from public API, as they seem to be unused downstream
  • remove misspelled FLUID_SEQ_PITCHWHHELSENS macro
  • remove struct _fluid_mod_t from public API, use the getters and setters of mod.h instead
  • remove struct _fluid_gen_t, fluid_gen_set_default_values() and enum fluid_gen_flags from public API
  • remove macros fluid_sfont_get_id() and fluid_sample_refcount() from public API
  • remove FLUID_NUM_MOD macro from public API
  • remove the following deprecated enum values from public API:
    • GEN_LAST
    • LAST_LOG_LEVEL
    • FLUID_SEQ_LASTEVENT
    • FLUID_MIDI_ROUTER_RULE_COUNT