0.4.0
Big stuff:
- Added support for polynomial resamples and
sample_quality
opcodes (#238 #267). The engine now defaults to a value of2
for this opcode, which is more intensive than the original linear interpolation resampler but provides a better quality. Added support for better resampling algorithms also in the wavetables viaoscillator_quality
(#287). - Support
_curvecc
and_stepcc
opcodes (#166 #155 #77) as well as_smoothcc
opcodes (#181 #48 #22 #153 #297 #285) - Added support and API for Scala tuning files in the engine and the plugins (#253 #268 #282)
Other new features:
- Added support for unison oscillators (#161)
- Support for the
polyphony
opcode at all levels (#171 #275), as well asnote_polyphony
. Thegroup=
polyphony is also more flexible and can be defined anywhere. - Added support for
offset_cc
(#170 #159) - Added support for
direction=reverse
(#185 #179) - Added support to label the keys using a
label_key
opcode. This is not really standard yet, but it is now integrated in the LV2 plugin to advertise the names in the MIDNAM file and possibly change their labels in hosts that support it. (#174 #154) - Added support for block comments
/* */
in the parser (#196 #195) - Added a
sfizz_render
client in tree; you can build it with the make targetsfizz_render
if theSFIZZ_RENDER
CMake variable is set toON
. (#200 #201 #206) - Add support to integrate sfizz in DPF plugins (#216)
- Added an AudioUnit target (#224)
- Added support for the
set_hdcc
opcodes and overall added the ability to support floating-point CCs from the API (#233 #232 #244) - Added support for FLAC loops (#242 #229)
- Support the
mapPath
feature of the LV2 specifications, for tentatively better portability in plugin states (#303) - New instances of the sfizz LV2 plugin will now load a default
*sine
instrument (#283)
Issues:
- Solved some issues with DSmolken's drumkits related to the ampeg envelope (#172)
- An exception problem was thrown if an sfz file was deleted (#182 #184)
- Properly bundle the
dylib
for macOS (#188) - Improved the filter stability (#198 #199 #210)
- Handle
USE_LIBCPP
properly on configure (#203) - Fix the handling of loop markers if sample
end=
is present (#202 #204) - Handle note on with 0 velocity as note offs in the jack client (#208 #211)
- Solved an issue with super short files (#215)
- Corrected a stack smashing bug in the LV2 plugin (#226)
- Fixed some parsing issues with
$variables
(#230) - Properly advertise the VST plugin parameters (#241)
- Process
$
expansions in#include
(#247) - Change the default build type to
RelWithDebInfo
(#249) - Improve the note stealing algorithm (#214); note that this is still very much a work in progress since many heuristics are in play here. Feel free to report misbehavior regarding note stealing as we improve this regularly.
- Corrected a bug with SFZ v1
velcurve
(#263) - Properly support the
off_by=-1
opcode to correctly reset the value. (#235) - Corrected some errors with null-terminated atoms in the LV2 plugin (#269)
- Ignore garbage values following e.g. a key number in opcode values (as in
key=64Garbage
->key=64
) (#263) ampeg_****_onccXX
modifiers now properly consider multiple CC modifiers (#300 #167)- Add headers and group sources in the CMake project for integration with e.g. Qt (#312)
- Trigger on CC does not require disabling the key triggering through e.g.
key=-1
(#315) - Support flat notes parsed as string values (#291 #289)
- Improved handling of
release_key
(#298); still not perfect, if the region spans multiple key and multiple notes happened with the pedal down, only a single voice will start. - Properly read the LV2 option list until the end (#323, by @atsushieno)
- Corrected a parsing issue when
$variables
were part of an opcode name (#328) - Various other plumbing changes
API additions:
- Added API calls to set
$variable
define values prior to loading an SFZ file (#168 #119 #130) - Added API calls to get key labels and cc labels defined by
label_key
andlabel_cc
(#174) - Added an API call to load an sfz file as an
std::string
orconst char*
(#217) - Added API calls for Scala files and tunings (#253)
- Added high-definition floating point CC API calls (#244)
- Added API calls to change the default resampling quality (#267 #238)