Skip to content
Paul edited this page Feb 22, 2025 · 19 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.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.