clap - オーディオプラグインAPI

(Audio Plugin API)

Created at: 2014-11-11 14:49:32
Language: C
License: MIT

CLAP

CLAPについて学ぶ

CLAPは、 CL ever A udioPluginの略です。これは、デジタルオーディオワークステーションとオーディオプラグイン(シンセサイザー、オーディオエフェクトなど)が連携するための標準を定義するオーディオプラグインABIです。

CLAPを使用するには、clap/clap.hをインクルードします。

最も重要な2つのオブジェクトはと

clap_host
です
clap_plugin

src / plugin-template.cは、CLAPプラグインを配線する方法を示す非常に最小限の例です。

エントリーポイント

エントリポイントはentry.hで宣言されています。

拡張機能

ほとんどの機能は、実際にはCインターフェイスである拡張機能に由来します。

// 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);
   // ...
}

拡張機能はextフォルダーで定義されます。

一部の拡張機能はまだ設計が進行中であり、ドラフトフォルダーにあります。

拡張機能には次のものが付属しています。

  • ヘッダー
    #include <clap/ext/xxx.h>
  • 拡張識別子:
    #define CLAP_EXT_XXX "clap/XXX"
  • ホストインターフェイスの名前は次のようになります。
    struct clap_host_xxx
  • プラグインインターフェイスの名前は次のようになります。
    struct clap_plugin_xxx
  • 各メソッドには明確なスレッド仕様が必要です

独自の拡張機能を作成して共有できます。拡張機能の識別子を確認してください

  • ABIが壊れた場合のバージョン管理が含まれます
  • 一意の識別子

すべての文字列は有効なUTF-8です。

基本的な拡張

これは、基本的なプラグインエクスペリエンスを取得するために実装および使用する可能性が最も高い拡張機能のリストです。

サポート拡張機能

追加の拡張機能

  • note-name、ノートに名前を付ける、ドラムマシンに便利
  • チューニング、ホスト提供のマイクロチューニング
  • トラック情報
  • クイックコントロール、8つのノブを備えたコントロールにマッピングできるコントロールのバンク
  • file-reference、プラグインのファイル参照についてホストに通知し、「収集して保存」を実行します
  • 更新を確認し、プラグインの新しいバージョンがあるかどうかを確認します
  • audio-ports-config、可能な構成の簡単なリスト
  • サラウンド、サラウンドチャネルマッピングを検査します
  • アンビソニックス、アンビソニックスチャネルマッピングを検査します

資力

プラグイン

ホスト

  • Bitwig、少なくともBitwig Studio 4.3Beta5が必要です

  • clap-host、非常に単純なホスト
  • clap-plugins、非常にシンプルなプラグイン
  • schwaaaのプラグイン、ユーザーインターフェイスとしてDearImGuiを使用してCLAPオーディオプラグインをプロトタイピングするための基本的な例

コミュニティ関連プロジェクト

  • clap-juce-extension、juceアドオン
  • MIP2、ホストおよびプラグイン
  • Avendish、ClapをサポートするC++のメディアプラグイン用のリフレクションベースのAPI
  • nih-plug、APIにとらわれない、Rustベースのプラグインフレームワークで、邪魔にならずに定型文を減らすことを目的としています

プログラミング言語バインディング

アートワーク