Skip to content
Paul edited this page Mar 15, 2026 · 22 revisions

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 (March 2026)

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_t etc... 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 kMain even 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_info as 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.
  • 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.h for how to enable and use this.
    • Correct use of Indexed and HighResolution parameter flags
    • Run auval in 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
  • 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 (July 2025)

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_resize match 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 nullptr in clap_audio_port_info.port_type appropriately
  • New Features

    • Add the VST3 Gain Reduction extension and map it to the draft clap gain_adjustment_metereing extension
  • Smaller Fixes

    • Use CMAKE_SYSTEM_PROCESSOR to accurately house VST3 directories when using windows and linux VST3 bundles (rather than default to x86_64)
    • Silence warnings when parent projects also contain fmt library
    • Resilient apple builds if CMAKE_OSX_DEPLOYMENT_TARGET is unset
    • VST3 wrapper correctly sets CLAP_TRANSPORT_HAS_SECONDS_TIMELINE and _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

0.12.1 (April 2025)

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_LEVEL defaults and cmake options
    • fix a FMT_HEADER_ONLY define inconsistency
    • fix a problem with DEBUG_POSTFIX and RtAudio on windows
    • Collection of std::filesystem related changes and refactors on windows
    • Add 'extern "C"' declarations around the clap wrapper vst3 and auv2 extensions.
  • 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

0.12.0 (February 2025)

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 reset when 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/clapfirst or the six-sines project 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

0.11.0 (October 2024)

  • 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

0.10.1 (July 2024)

  • Include one ARA cleanup commit for the VST3
  • Only set CMAKE_MSVC_RUNTIME_LIBRARY (to static) if it is not set, allowing parent CMakeLists to make their own choice
  • Include timer.cpp on 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)

0.10.0 (July 2024)

  • 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 gui extension
  • Add a build time option for the wrapper to statically locate clap_entry as opposed to via dlopen on self or remote clap.

0.9.1 (May 2024)

  • 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

0.9.0 (Apr 2024)

  • VST3 wrapper feature complete (Context menu support added)
  • AUv2 wrapper feature complete
  • Standalone working, in progress

0.8.0 (Mar 2024)

  • 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

0.7.0 (Feb 2024)

  • 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

0.5.0 (Sep 2023)

  • 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 -Werror on 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 (Aug 2023)

  • 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.