GithubHelp home page GithubHelp logo

pthrr / clap Goto Github PK

View Code? Open in Web Editor NEW

This project forked from free-audio/clap

0.0 0.0 0.0 5.1 MB

Audio Plugin API

Home Page: https://cleveraudio.org/

License: MIT License

C++ 1.40% C 95.47% CMake 3.13%

clap's Introduction

CLAP

Learn about CLAP

CLAP stands for CLever Audio Plugin. 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

Extra extensions

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

Community related projects

  • 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

clap's People

Contributors

abique avatar joshnatis avatar baconpaul avatar robbert-vdh avatar tim-janik avatar trinitou avatar defiantnerd avatar samwindell avatar mnkisala avatar schwaaa avatar schroedingers-cat avatar spongeboburu avatar xris1658 avatar dreddi avatar jpcima avatar hammyhavoc avatar alexharker avatar plgdavid avatar jaxter184 avatar jcelerier avatar kmatheussen avatar tobiashienzsch avatar git-moss avatar glowcoil avatar madah81pnz1 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.