Skip to content

Quick Start Guide (Integrated)

Paul edited this page Nov 13, 2023 · 3 revisions

This Quick Start is aimed at developers who have a CMake build process which builds a CLAP and want to extend that to build wrappers for that CLAP in other formats. If you create your CLAP using other means, please see our quick start for standalone wrapping

Getting to a wrap in a hurry

Step One: Make the clap-wrapper project available to your CMake

First, Clone clap-wrapper or make it a submodule of your project.

Then add the clap-wrapper tools to your cmake build path with configuration choices. The following will add clap-wrapper and use CPM to download all the required dependencies. Please note if you choose this option it will download the VST3 SDK which may have license considerations for your project.

    set(CLAP_WRAPPER_DOWNLOAD_DEPENDENCIES TRUE CACHE BOOL "Download Dependencies")
    add_subdirectory(clap/clap-wrapper)

Step Two: Add a wrapper target to your cmake

You will have a target which builds a CLAP. From this we can infer most of what we need to build a VST3, AUv2, and standalone, but you still need to add and in some cases configure explicit targets.

set(VST3_TARGET ${PROJECT_NAME}_vst3)
add_library(${VST3_TARGET} MODULE)
target_add_vst3_wrapper(TARGET ${VST3_TARGET}
        OUTPUT_NAME "Your Plugin Name"
        SUPPORTS_ALL_NOTE_EXPRESSIONS TRUE
        )

Step Three: Reload your cmake and build

You can now build your ${PROJECT_NAME}_vst3 target and a working VST3 will result. The VST3 will try to load your CLAP from the default CLAP locations, so to work will need the underlying CLAP installed or in your CLAP_PATH search path.

What Next

The wrapper does way more than this. This quick start misses some of our more interesting options, namely:

  1. It doesn't create a standalone
  2. It doesn't create an AUv2 on macOS
  3. The VST3 loads the resulting CLAP dynamically; but there are other strategies to make fully self contained plugins
  4. You can configure a variety of VST3 and AUv2 options like your IDs and features either through CMake or through extensions.

Each of these are in our expanded developer documentation (Under development).