Learn about CLAP
CLAP stands for CL ever A udio P lugin.
It is an audio plugin ABI which defines a standard for Digital Audio Workstations and audio plugins (synthesizers, audio effects, ...) to work together.
To work with CLAP, include clap/clap.h .
The two most important objects are clap_host
and clap_plugin
.
src/plugin-template.c is a very minimal example which demonstrates how to wire a CLAP plugin.
Entry point
The entry point is declared in entry.h .
Extensions
Most features come from extensions, which are in fact C interfaces.
// host extension
const clap_host_log *log = host->extension(host, CLAP_EXT_LOG);
if (log)
log->log(host, CLAP_LOG_INFO, "Hello World! ;^)");
// plugin extension
const clap_plugin_params *params = plugin->extension(plugin, CLAP_EXT_PARAMS);
if (params)
{
uint32_t paramsCount = params->count(plugin);
// ...
}
The extensions are defined in the ext folder.
Some extensions are still in the progress of being designed and they are in
the draft folder.
An extension comes with:
a header #include <clap/ext/xxx.h>
an extension identifier: #define CLAP_EXT_XXX "clap/XXX"
host interfaces are named like: struct clap_host_xxx
plugin interfaces are named like: struct clap_plugin_xxx
each method must have a clear thread specification
You can create your own extensions and share them. Make sure that the extension identifier:
includes versioning in case the ABI breaks
is a unique identifier
All strings are valid UTF-8 .
Fundamental extensions
This is a list of the extensions that you most likely want to implement
and use to get a basic plugin experience:
log , lets the host aggregate plugin logs
thread-check , check which thread you are currently on, useful for correctness validation
audio-ports , define the audio ports
note-ports , define the note ports
params , parameters management
latency , report the plugin latency
render , renders realtime or offline
tail , processing tail length
state , save and load the plugin state
gui , generic gui controller
Support extensions
note-name , give a name to notes, useful for drum machines
tuning , host provided microtuning
track-info
quick-controls , bank of controls that can be mapped on a controlles with 8 knobs
file-reference , let the host know about the plugin's file reference, and perform "Collect & Save"
check-for-update , check if there is a new version of a plugin
audio-ports-config , simple list of possible configurations
surround , inspect surround channel mapping
ambisonic , inspect ambisonic channel mapping
Third-party extensions
Adapters
clap-wrapper , wrappers for using CLAP in other plugin environments
Resources
clap-validator , a validator and automatic test suite for CLAP plugins.
clapdb , a list of plugins and DAWs which supports CLAP
Examples
clap-juce-extension , juce add-on
MIP2 , host and plugins
Avendish , a reflection-based API for media plug-ins in C++ which supports Clap
NIH-plug , an API-agnostic, Rust-based plugin framework aiming to reduce boilerplate without getting in your way
Programming Language Bindings
Artwork