CLAP stands for CLever Audio Plugin. It is an interface that provides a stable ABI to define a standard for Digital Audio Workstations and audio plugins (synthesizers, audio effects, ...) to work together.
The ABI, or Application Binary Interface, serves as a means of communication between a host and a plugin. It provides backwards compatibility, that is, a plugin binary compiled with CLAP 1.x can be loaded by any other CLAP 1.y.
To work with CLAP, include clap/clap.h. To also include the draft extensions, include clap/all.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.
The entry point is declared in entry.h.
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:
#include <clap/ext/xxx.h>#define CLAP_EXT_XXX "clap/XXX"struct clap_host_xxxstruct clap_plugin_xxxYou can create your own extensions and share them. Make sure that the extension identifier:
All strings are valid UTF-8.
This is a list of the extensions that you most likely want to implement and use to get a basic plugin experience:
cockos.reaper_extension, access the REAPER API(top 24 of 51)
23,916 followers · starred Jun 2022
1,750 followers · starred Oct 2026
208 followers · starred Sep 2022
515 followers · starred Feb 2025
CLAP stands for CLever Audio Plugin. It is an interface that provides a stable ABI to define a standard for Digital Audio Workstations and audio plugins (synthesizers, audio effects, ...) to work together.
The ABI, or Application Binary Interface, serves as a means of communication between a host and a plugin. It provides backwards compatibility, that is, a plugin binary compiled with CLAP 1.x can be loaded by any other CLAP 1.y.
To work with CLAP, include clap/clap.h. To also include the draft extensions, include clap/all.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.
The entry point is declared in entry.h.
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:
#include <clap/ext/xxx.h>#define CLAP_EXT_XXX "clap/XXX"struct clap_host_xxxstruct clap_plugin_xxxYou can create your own extensions and share them. Make sure that the extension identifier:
All strings are valid UTF-8.
This is a list of the extensions that you most likely want to implement and use to get a basic plugin experience:
cockos.reaper_extension, access the REAPER API(top 24 of 51)
23,916 followers · starred Jun 2022
1,750 followers · starred Oct 2026
208 followers · starred Sep 2022
515 followers · starred Feb 2025