-
Notifications
You must be signed in to change notification settings - Fork 45
ChangeLog
The clap wrapper is still an undergoing project, and we are not yet at a 1.0 release.
In August 2023, we started the process of tagging checkpoint versions either as we reached internal milestones or before we began new substantial development
0.14.0 contains a set of fixes and improvements to all formats.
-
General:
- Implement clap-first cmake RESOURCE_DIRECTORY for copying into macOS bundles
- Correctly scope the use of
-fno-char_tetc... to C++/ObjC++ only - Adjust file formatting to consistently bind * to pointer variables. Move to clang-format 21
-
VST3:
- Make all output busses have the vst3 flag
kMaineven if the clap has only one main. CLAP requires only one main output, VST3 is amibugous on the matter, but StudioOne makes non-main output vst3 non-activatable. - Move to SDK 3.8.0 as default SDK
- Fix a thread-safety issue with
host::request_restart - Fix a crash caused by mis-checking NULL strings in descriptors
- Implement
clap_host_track_infoas a passthrough to VST3 track info API - Fix a malformed directory name when building Windows VST3 as a bundle as opposed to single file
- Run the VST3 validator in CI
- Fix several memory leaks involving memory which wasn't freed when plugins were destroyed.
- Make all output busses have the vst3 flag
-
AUV2:
- Add an extension allowing you to specify your parameter ordering, allowing you to preserve logic automation when
adding clap parameters between versions. Consult the documentation in
auv2.hfor how to enable and use this. - Correct use of Indexed and HighResolution parameter flags
- Run
auvalin our CI environment - Modify the cmake rules such that the CMAKE subtype and isntrument type are used if working with an embedded clap which doesn't implement the wrapper auv2 extension
- Add an extension allowing you to specify your parameter ordering, allowing you to preserve logic automation when
adding clap parameters between versions. Consult the documentation in
-
Standalone:
- Implement host request restart
- Linux: Re-implmeent gui driver as pure X11/epoll, removing GTK dependency. 0.14 still has GTK available as a build time opt in, but we intend to remove it for 0.15.
- Linux: If still using GTK, window close event quits standalone
- Windows: Use default entry point, unicode argv
- Windows: Fix clobbering loaded audio API
-
WCLAP
- WASI-SDK support for WClap
- WCLap Max Memory 4gb -> 2gb
- Factor emscripten/wasi toolchains to more common code
0.13.0 includes a set of new extensions and bugfixes, especially for threading edge cases, which have arisen as we used the wrapper in more production environments.
-
Important Fixes
- AUv2 - fix a couple of crashes which can occur after close with an order of operations and use after free due to autorelease pool.
- AUv2 - fix a memory error with very long clap param names in some hosts
- AUv2 - fix a problem with the audio thread sometimes calling parameter value_to_text, which is main thread only
- VST3 - make
request_resizematch the CLAP[thread-safe]requirement while still meeting the VST3[main thread]requirement. - All Hosts - fix a race condition for many-thread plugins with request callback
- Handle a variety of null cases when the subordinate CLAP fails to initalize or produces an invalid factory result.
- Handle
nullptrinclap_audio_port_info.port_typeappropriately
-
New Features
- Add the VST3 Gain Reduction extension and map it to the draft clap
gain_adjustment_metereingextension
- Add the VST3 Gain Reduction extension and map it to the draft clap
-
Smaller Fixes
- Use
CMAKE_SYSTEM_PROCESSORto accurately house VST3 directories when using windows and linux VST3 bundles (rather than default to x86_64) - Silence warnings when parent projects also contain
fmtlibrary - Resilient apple builds if
CMAKE_OSX_DEPLOYMENT_TARGETis unset - VST3 wrapper correctly sets
CLAP_TRANSPORT_HAS_SECONDS_TIMELINEand_BEAT_ - A variety of windows build time fixes, including CMake support for
CLangCL(Microsoft front end to clang) and for correct linkage with newer windows SDKs
- Use
v0.12.1 is a small point release with fixes found as several other products start to use and deploy on 0.12.0
-
CMake and Build issues
- clean up
PROJECT_IS_TOP_LEVELdefaults and cmake options - fix a
FMT_HEADER_ONLYdefine inconsistency - fix a problem with
DEBUG_POSTFIXand RtAudio on windows - Collection of
std::filesystemrelated changes and refactors on windows - Add 'extern "C"' declarations around the clap wrapper vst3 and auv2 extensions.
- clean up
-
Format specific changes
- Standalone successfully passes mono inputs to stereo channels in audio path.
- VST3 can be a folder-bundle or single-file VST3 on windows when using clap-first cmake
- Improve the mac standalone startup so that plugin creation happens after ApplicationDidFinishLaunching, which stops some occasional startup hangs or inconsistencies with cocoa activation
-
Small fixes
- Call param flush appropriately in the clap first distortion example
v0.12.0 is the clap-wrapper version we used to power six sines, a small PM/FM/RM synth which got widely used and helped us find many edge case bugs and finalize several features.
-
Format Specific Changes. Major fixes in bold
- AUv2: Correct a problem in ChangeStreamFormat which set sample rate incorrectly
- VST3: Create platform-consistent CID from clap id on macOS, linux, and windows. Prior versions created inconsistent CID byte ordering
- AUv2: Fix a crash-creating lifetime problem with a parameter name CFString when parameter rescans happen
- AUv2: Eject clap features as AUv2 tags in the Info.plist
- VST3: Call clap
resetwhen vst3 processing stops - VST3: Substantially improve the implementation of param flush
- VST3: Correctly respond to bus layout requests with audio-ports (but not with multi-configuration apis yet)
- VST3: Convert PolyAT to clap MIDI messages if no note-expression wrapper support found
- Standalone (all platforms): Use the current default device not default default device sample rate when starting the standalone
- Standalone (macOS): add support for a macOS icon file
- Standalone (macOS): Setup the gui resize handler early enough in the lifecycle to allow resizing
- Standalone (all platforms): Modify logging so it is off-by-default in release and generally cleaner in debug
-
CLAP First CMake Support
- Introduce a simple cmake idiom for 'clap-first' programming
- 'clap-first' encourages you to make your clap as a static library, and then the clap wrapper uses that library plus a small entry point file to generate a CLAP, VST3, AUv2, Standalone and in the future other formats
- For documentation consult make_clapfirst.cmake
or look at the the test in
tests/clapfirstor thesix-sinesproject linked above
-
Code Cleanup and Small Fixes
- CMake: If target 'fmt' already exists, use that rather than trying to locally resolve fmt
- C++ (Linux): Add a range guard to sha1.cpp which could trip up some versions of gcc14 into creating a specious warning
- C++ (Linux): Remove some extra semicolons which ejected an error in pedantic mode with recent gcc
- Standalone (Linux): Change a deprecated GTK flag to the modern version
- Standalone (macOS): Rename the AppDelegate class to ClapWrapperAppDelegate to avoid name clashes at link time
- CMake (macOS/Linux): Fix the copy-after-build rules; introduce CLAP copy-after-build
-
Windows Standalone substantial improvements
- The Windows Standalone has a complete refactor
- An audio/midi settings screen is in place
- builds with various compilers and compiler versions
- Properly defines unicode, handles UTF16 files
- correctly factor CMake to not leak NOMINMAX, etc..
- complies without warning even at high warning levels
-
VST3
- Test the VST3 extensively with linux hosts, and adjust
- Implement several API points required for the VST3 in Ardour
- Implement Steinberg::IPlugViewContentScaleSupport properly for scaling on Linux/Win
- Implement SingleComponentEffect::getBusInfo to respond earlier, fixing an Ardour crash
- clap param_refresh forces accurate VST3 parameter refresh
- Correctly convert UTF8/UTF16 for internal strings, allowing clap parameter names with extended charsets to work in VST3
- Fix an off-by-one error in stepped value conversions reflecting as VST3 stepped parameters
-
AUV2
- Allow a user specified INSTRUMENT_TYPE
- Allow several strategies for constructing the AUV2 state stream, including one which allows compatibility with ausdk examples and another allowing compatibility with JUCE AUv2
- Make the host name reported by the plugin consistent with the VST3
- Fix a memory double-free in host get name.
- clap param_refresh forces accurate AUv2 parameter refresh
- AUv2 request resize makes host window resize
- Remove some unused code which would create a harmless class warning when validating
- the MACOSX_EMBEDDED_CLAP option also uses that clap for plist creation
-
Other wrapper fixes
- request_resize doesn't block on can_resize
- Mac standalone timer halts properly avoiding a crash-on-exit
- The metadata in the
clap_host_t*object is more accurate in several situations
-
CMake and C++ infrastructure
- Update CPM to 0.40.2
- Update fmt to 11.0
- Set flags correctly for C++ 20 builds
- Change clap wrapper private/public flags to avoid Werror etc leaking to upstream targets
- Support CMAKE_UNITY builds
- All stand-alonee accurately set OUTPUT_NAME cmake property
- Include one ARA cleanup commit for the VST3
- Only set
CMAKE_MSVC_RUNTIME_LIBRARY(to static) if it is not set, allowing parentCMakeListsto make their own choice - Include
timer.cppon Linux for VST3 SDK versions 3.7.9 or newer - Update the version in CMakeLists.txt (in 0.10.0 it was still 0.9.2; now it is 0.10.1)
- Add ARA support to the VST3 wrapper. If your underlying CLAP implements the ARA extension, your wrapped VST3 will correctly wrap the ARA API
- Add a small example of a clap plugin which builds self contained VST3, AUv2, etc...; build this in our CI pipeline as a test.
- Fix an off-by-one error in VST3 stepped params
- Fix a set of AUv2 crashes for plugins which do not implement the
guiextension - Add a build time option for the wrapper to statically locate
clap_entryas opposed to viadlopenon self or remote clap.
- Fixed to support VST3 program changes
- Implement offline processing for clap
- Implement the IsRecording flag for AUv2
- Allow child NSView to resize wrapper in AUv2
- VST3 wrapper feature complete (Context menu support added)
- AUv2 wrapper feature complete
- Standalone working, in progress
- Check active state before querying latency. Issue 229 by @Schroedingers-Cat
- VST3 programs / MIDI Program Changes
- fixed release build issues
- CMake Project Version reflected in version struct for CLAP host
- IMIDIMapping wasn't correctly used in VST3 wrapper
- Audio Unit v2 (AUv2) wrapper is completed
- Uses CLAP 1.2.0 now
- Hostnames for different wrapper flavors are fixed
- fixed Cocoa namespaces clashes
- better unicode path handling on Windows
- Standalone App on Windows is now a proper application
- Various small bugfixes and improvements
- A substantial rework of the CMake infrastructure, making the code more library like, able to download dependencies, and more
- Changes to allow operation as a top-level or subordinate cmake.
- Support for a variety of linking modes, including co-linked single products, included bundles, and standalone plugins
- A shell for AUv2 work
- Allow builds back to macOS 10.11; Set the default build target to 10.13
- Implement linux Timer and FD support, allowing full linux implementation of many test cases
- Turn on
-Wall -Wextra -Wpedantic -Werroron linux - Suppress CLAP Param Change events for parameters under edit
- Implement param to/from string VST3 API
- Output note ports in CLAP become output event queues in VST3; CLAP_EVENT_NOTE_* is transmitted out (but note expressions and MIDI are not yet)
- Several small crash and lifecycle fixes on various OSes
- 0.4.0 is the first tagged release.
- It can create a win/mac VST3 with a subset of the spec which runs with a remote clap.
- It implements the entire clap host API required to proxy to multiple formats.