sfizz 1.0.0 release

Published by github-actions[bot] at 2021-04-16 15:31:49


We would like to thank to our contributors at https://opencollective.com/sfztools, as well as everyone who is regularly testing and pushing sfizz to the limits! Your support to this project in any form is much appreciated.

You can download builds catered for your Linux distribution over at OBS. The Mac, Windows and MOD packages are below in the release assets, as well as the source packages.

Headlines:

  • SFZ v1 is virtually supported except for a handful of opcodes ! Please check https://sfz.tools/sfizz/development/status/ for the up-to-date status of opcode support.
  • It is now possible to build sfizz without relying on libsndfile, using a set of libraries. This is now the default build mode. Building with libsndfile can be enabled at configure time.
  • The library and plugins can now load DecentSampler files, and could accomodate other formats.
  • CCs, keyswitch range, key ranges and active keyswitch are now displayed in the editor for all plugins. There has been a lot of UI work to make it more practical to use.
  • There is an OSC interface in the library, which allows to have introspection into the currently loaded file, the state of CCs/keyswitches, and also set some parameters for loaded regions.

API/ABI changes for the library:

  • The ABI is broken, leading to a major version change.
  • Thread-safety now has to be handled externally. The API has been updated to provide a concurrency spec.
  • The current version of the internal oversampling factor was too unstable and has been disabled for the time being. The API and plugin parameters are staying for compatibility. A more robust implementation should come soon.
  • Added documentation in the API calls to make clear that sample-accurate triggering of voice requires messages to be sent in order. The VST plugin in particular did not respect this and has been updated.
  • A new bpmTempo method has been added to pass tempo as beats-per-minute rather than seconds per beat. The previous version is deprecated.
  • There are new HD (float) versions of API calls for note and CC events.
  • aftertouch is renamed as channel_aftertouch (for C) and channelAftertouch (for C++) throughout the API to be more consistent with polyAftertouch.

UI:

  • UI improvements and tweaks, adding themability in particular (#826 #824 #822 #821 #819 #818 #816 #812 #799 #743 #691 #674 #673 #672 #670 #662 #661 #656)
  • Added an info panel in the plugin UI (#793 #792 #791 #789 #788 #787 #782 #779 #773)
  • Improve font handling (#669 #622)
  • Improve file handling in the UI (#645 #659 #658) and enable the use of a "default user directory" or environment variable. This also allows the plugin to "find" missing sfz files in a different environment (#644 #581 #572 #532)
  • Support DecentSampler and a generic importer for other formats (#725 #715 #680)
  • Show the current keyswitch on the editor and the virtual keybnoard (#665 #657)
  • Added a button to reset the scala file to default (#660)
  • The plugins now display an image through the image opcode (#770)

Plugins:

  • Remove automation from un-automatable parameters in the VST plugin (#814)
  • Order VST events (#810 #803)
  • Added the option to build a VST2 version of sfizz if you have the SDK available (#708)
  • The C++ standard is set to 14 if you build the UI on LV2, or if you build the VST version. This will likely increase to 17 shortly due to the dependency on VSTGUI. The ui-less LV2 plugin and the library remain C++11 compatible. Note that windows builds already use C++17 on all targets. (#795)
  • Fix corruptions and crashes that happened in the LV2 plugin (#794 #668 #557)
  • The internal controllers of sfizz are now presented as parameters in the LV2 plugin. Experimental midi binding is also active on them. By default the "direct" midi input is disabled and you need to map to the parameters. A compile-time option is available to re-enable the midi input. (#776)
  • Fix crashes in the VST plugin (#709 #702 #681 #625)
  • Enable checking if file changed even when the transport is not running (#712 #689)
  • The Mac builds are now signed (#550 #552)
  • Update VST to 3.7.2 (#798)

Library:

  • Small files with only zeroes are considered as *silence (#831)
  • The library uses an Hermite interpolation by default (#828 #829)
  • Fix an error where sample indices could wrap for massive pitch modulations (#825 #751)
  • Add high-definition versions of the API calls (#820)
  • Corrected a bug where regions with long release envelopes would not stop on sample ending (#811)
  • Support polyphonic aftertouch events, triggers and targets (#809 #764)
  • Support monophonic aftertouch events, triggers and targets (#765 #630 )
  • Corrected a regression where sfizz would stop loading the SFZ file if some sample files cannot be loaded (#806)
  • Update abseil and ghc::filesystem (#780), the tunings library from Surge (#785), catch2 (#711)
  • It is now possible to change some parameters of the regions after loading the file through the OSC interface (#761)
  • Improve the choking logic to match the spec and other implementations (#778)
  • Added modulation targets for amplitude, pan, width, position, pitch and volume (#760)
  • Support CC modifiers for end, loop_start and loop_end (#752)
  • Support CC modifiers for LFO targets (#753)
  • Support SFZ v1 extended CCs (#747)
  • Implement the sostenuto logic (#739)
  • Refactored opcode reading and storing (#748 #727 #721 #722 #720 #700 #559)
  • Fix the parser to support sharp (#) symbols in file names (#746)
  • Improved the ADSR transitions from decay to sustain, and from release to 0 (#734 #373)
  • Reset the smoothers if the playhead moved (#731 #710 #382)
  • Corrected a bug where the first sample was ignored on playback (#732 #394)
  • Added CC modulation for depth targets (#730)
  • If the sustain level is low enough the envelope is set to free-run (#723, #676)
  • Fix loop crossfades when the loop starts early in the sample (#718)
  • Fix random generators to match ARIA's behavior (#719)
  • Fix corruption appearing in some sample libraries (#717 #695)
  • Smoothers are now linear (#713 #714 #703)
  • Filter/EQ parameters are clamped even with modulation (#701 #699)
  • Implement v1 LFOs (#693)
  • Support count and loop_count (#654)
  • Fix a bug where the sample rate was not propagated properly to the flex EGs (#683)
  • Delay envelope start by the voice delay (#655 #432)
  • Support delay_oncc (#653)
  • Support sw_vel (#650)
  • Fix note_polyphony choking (#634 #529)
  • Respect the end opcode (#618)
  • Fix allocations that may happen on the RT thread (#621)
  • Fix the polyphony manager when the engine polyphony is changed after a file is loaded (#619)
  • Avoid reloading invalid files (#614)
  • Allow parsing of some badly formed files files (#600)
  • Match ARIA's LFOs (#613)
  • Added windowed sinc interpolation for sample_quality from 3 to 10 (#609)
  • Improve the Hermite interpolation (#597)
  • Update AtomicQueue to correct a bug (#583)
  • Support lfoN_beats (#553)
  • Add region and voice introspection to the OSC interface (#555)
  • Enable fast-math on MSVC (#567)
  • Fix crashes when building with libsndfile (#542 #543)
  • Properly pad and align the wav files upon reading (#538)
  • Add an alternative to libsndfile (#482 #534 #535 #536)
  • Handle gracefully having a different sw_default in a region (#531)
  • Support disjoint keyswitch ranges, as well as sw_lolast and sw_hilast (#526)

See: GitHub release page