- ブログ
- 比較
Sonore SDK と JUCE の比較: オーディオプラグイン向けのApache-2.0の代替
Sonore SDKもJUCEも、C++からVST3、Audio Unit v2・v3、AAX、LV2、スタンドアロンアプリをビルドできます。対応OSはWindows、macOS、Linux、iOS、Androidです。両者を分けるのは、ライセンス、CLAP、そしてコーディングエージェントへの対応です。Sonore SDKはApache-2.0のもとで収益額にかかわらず無料で、CLAPをネイティブにビルドし、ヘッダーオンリーで、コーディングエージェントにMCPサーバーを提供します。JUCEは年間収益が$20,000を超えると費用がかかり(ソースをAGPLv3で公開する場合を除く)、CLAPは第三者の拡張機能経由でのみビルドできます。新しいプラグインなら、Sonore SDKがより良い選択です。
このページの内容
比較表
| Sonore SDK | JUCE 9 | |
|---|---|---|
| ライセンス | Apache-2.0 | AGPLv3、または商用のJUCE 9 EULA |
| クローズドソースのプラグイン | 収益額を問わず無料 | 年間収益$20,000まで無料。それを超えるとIndieまたはPro |
| CLAP | ネイティブ: コア形式 | サードパーティのclap-juce-extensions経由 |
| VST3 | あり。SteinbergのC APIヘッダー経由 | あり |
| Audio Units | AUv2とAUv3 | AUv2とAUv3 |
| AAX | AAX Native。AvidのSDKを各自で用意 | あり |
| LV2 | あり | あり |
| プラットフォーム | Windows、macOS、Linux、iOS、Android | Windows、macOS、Linux、iOS、Android |
| コード | ヘッダーオンリー。プラグインごとに1つのソースファイル | プロジェクトにコンパイルされるモジュール |
| ビルド | CMake 3.21以上。AndroidはGradle不要 | CMake 3.22以上、またはProjucer |
| GUI | SDKが描画するネイティブエディタ、またはOSのWebViewに表示するHTMLページ | JUCEのComponent、Direct2D、WebViewのUI |
| コーディングエージェント | 公式MCPサーバー、Agent Skill、llms.txt |
llms.txtとAGENTS.md |
| 最新版 | 1.0.0、2026年10月 | 9.0.4、2026年10月12日 |
ライセンスと費用
これは多くのチームが最初に感じる違いです。JUCEはJUCE 8以降デュアルライセンスで、AGPLv3、または年間収益か資金額の段階で決まる商用EULAのいずれかです。
| JUCE 9の段階 | 収益または資金 | サブスクリプション | 永続ライセンス |
|---|---|---|---|
| Starter | $20,000まで | 無料 | 無料 |
| Indie | $300,000まで | 1ユーザーあたり月$40 | 1ユーザーあたり$800 |
| Pro | 上限なし | 1ユーザーあたり月$175、12か月の最低契約 | 1ユーザーあたり$3,500 |
実際には、開発者3人のチームの場合、収益が$20,000を超えると、Indieのサブスクリプションで年間$1,440になります。$300,000を超えると、Proのサブスクリプションで年間$6,300、永続のProライセンスなら一括で$10,500です。これらの数字は公表価格から直接算出しています。JUCEが以前要求していたスプラッシュ画面はJUCE 8で廃止されました。JUCE 9の価格はJUCE 8と同じです。
Sonore SDKはApache-2.0で、段階はありません。クローズドソースのプラグインは収益額を問わず費用がかからず、ライセンスの特許許諾も付いてきます。義務は、配布するものにライセンスとNOTICEファイルを含めることです。形式の所有者の条件は両フレームワークに等しく適用されます。AAXにはAvidとの契約とPACEの署名が必要です。また、VST 3.8(2025年10月)以降、Steinbergは VST3 の配布に契約を求めなくなりました。
形式とプラットフォーム
CLAPは、2つの違いが最も大きい形式です。JUCEの2024年と2025年のロードマップでは、ネイティブのCLAPがJUCE 9に入る予定でしたが、実際には入りませんでした。そのためJUCEのプラグインは、clap-juce-extensions経由でCLAPを得ます。Sonore SDKではCLAPがコアです。CLAPラッパーがパラメータ、状態、エディタの橋渡しを担い、VST3、Audio Units、AAX、LV2がそれに適合します。そのため、プラグインはホストがどの形式で読み込んだかによって振る舞いが変わることはありません。
デスクトップでは、両者ともWindows、macOS、LinuxでVST3、AUv2、LV2とスタンドアロンアプリを、WindowsとmacOSでAAXをビルドします。Sonoreはそれらすべて(CLAPを含む)を1回のsonore_add_plugin呼び出しからビルドします。ソースは1回だけコンパイルされ、すべてのバンドルにリンクされ、AAX用にはAvidのSDKに対してさらにもう一度リンクされます。
iPhone、iPad、Androidでは、両者ともプラグインとアプリをビルドできます。Sonoreでは、ここでも同じplugin.cppを使います:
- AUv3。
sonore_add_auv3は、プラグインをAudio Unitエクステンションとしてアプリの中に収めます。これは、iPad版のGarageBand、AUM、Cubasis、Logic Proが読み込む唯一の種類のプラグインであり、Mac App Storeが受け付ける種類でもあります。ジェスチャー付きのパラメータツリー、サンプル精度のオートメーション、MIDI 1.0と2.0の入力とMIDIの出力、テンポとトランスポート、ファクトリープリセット、そして他のすべての形式と同じ保存状態を備えています。 - iPhoneとiPadのアプリ。 エディタはセーフエリア内で全画面表示され、音はRemoteIO、MIDIキーボードはCoreMIDIを通じて扱われます。
- Androidアプリ。 NDKがCMakeから直接APKをビルドします。Gradleは不要です。AAudioで再生し、接続されたすべてのMIDIキーボードを受け付け、どちらのエディタも表示できます。
プラグインの書き方
JUCEのプラグインは、processBlockを持つAudioProcessorのサブクラス、AudioProcessorEditor、そしてプロジェクトにコンパイルされたJUCEモジュールで構成されます。Sonoreのプラグインは、3つの部分からなる1つのファイルです。DSP構造体、パラメータテーブル、そしてディスクリプタです。
#define SONORE_NUM_PARAMS 1
#include <sonore/dsp.h>
struct SonoreDsp {
sonore::Smooth gain;
void prepare(const sonore::ProcessSpec& spec) { gain.setup((float) spec.sampleRate, 20.0f); gain.snap(1.0f); }
void process(sonore::AudioBlock<float>& io, const float* p) {
for (size_t i = 0; i < io.getNumSamples(); ++i) {
const float g = gain.next(sonore::dbToGain(p[0]));
for (size_t c = 0; c < io.getNumChannels(); ++c) io.getChannelPointer(c)[i] *= g;
}
}
};
#include <sonore/plugin.h>
static const sonore::ParamInfo kParamTable[SONORE_NUM_PARAMS] = {{"gain", "Gain", "dB", -24.0f, 12.0f, 0.0f}};
static const sonore::PluginDescriptor kDesc = {"com.example.gain", "Gain", "Me", "1.0.0", "A gain stage.", "https://example.com", false, kParamTable, SONORE_NUM_PARAMS};
#include <sonore/formats.h>パラメータは、テーブルの順序で、すでにデシベルまたはヘルツに変換された素の値として届きます。任意の動作は、対応するメンバーを宣言することでオプトインします。latencySamples()、tailSamples()、saveState()、サイドチェーンまたはMIDIのprocessシグネチャなどです。ラッパーはコンパイル時にそれを見つけ、宣言しないDSPはコストを払いません。
JUCEから来た方には、なじみのある名前もあります。MidiBuffer、AudioBlock、ネイティブエディタ用のComponentツリー、MessageManager、そしてウィジェットのアタッチメントを持つパラメータテーブル上のAudioProcessorValueTreeStateです。このSDKはフォークではなく、ソース互換でもありません。DSPのコードは素のC++としてそのまま移行できますが、プラグインの外殻は上記の形に書き直します。プラグインがすでに出荷されている場合は、各フレームワークがプラグインIDを独自の方法で導出するため、ホストが新しいビルドをどのように識別するかを計画してください。
インターフェース
JUCEのComponentは成熟した保持モードのツールキットで、JUCE 8ではWebViewのインターフェースが加わりました。Sonore SDKも、すべてのプラットフォームで両方の経路を備えています:
- ページのないプラグイン は、SDKが独自のウィンドウで描画するネイティブエディタを得ます。ブラウザプロセスは使いません。テキストはGPOSのカーニングと、アラビア語、インド系言語など数十の文字体系向けのHarfBuzz系のシェーピングで組版し、カラー絵文字を描画し、SVGのアートを読み込みます。
- ページのあるプラグイン は、OSのWebViewで開くHTMLを提供します。WebView2、WKWebView、WebKitGTK、またはAndroidのWebViewです。
window.sonoreブリッジがそれをプラグインに接続し、その編集はロックフリーのキューを通じてオーディオスレッドに届きます。
プラグイン向けに作られたDSP
Sonore SDKには、プラグインが実際に行う処理を対象とし、公開された論文に基づいて実装されたDSPライブラリが付属しています:
- 回路レベルのモデル: ノーダルDKエンジン、Fuzz Face、TS-808のドライブ段;
- テープのサチュレーションとテープEQ;
- BS.1770のラウドネスとトゥルーピークのメータリング;
- ピッチ補正とフェーズボコーダーによるピッチシフト;
- グラニュラーエンジン;
- プレート、スプリング、FDNのリバーブ;
- オプトからOTT風のマルチバンドまでのダイナミクス;
- シンセの構成要素: ボイス・スティール、グライド付きのモノとレガート、CLAPのポリフォニック・モジュレーション、モジュレーション・マトリクス。
コーディングエージェント
JUCEはllms.txtとAGENTS.mdを公開しており、2026年9月以降、そのREADMEはAIツールに対し、ユーザーに商用JUCEライセンスが必要かもしれないと伝えるよう求めています。公式のMCPサーバーはありません。
Sonore SDKは、エージェントがコードの多くを書くことを想定して作られました:
- MCPサーバー は、ある名前が存在するか、その実際の宣言が何かに答えます。CIは、その検索が282個のヘッダーにある766個のすべての公開型を見つけることを検証しています。
- Agent Skill は、Claude Code、Codex、Cursor、Antigravityにワークフローを与えます。プロジェクトを生成し、名前を調べ、
ctestとバリデータが通ったときにのみ完了とします。
すべてはヘッダーから生成されるため、ヘッダーとずれることはありません。コーディングエージェントでプラグインをビルドする方法で手順を説明しています。
Sonore SDKが適している場合
- 新しいプラグインを始めるときで、1つのソースファイルでデスクトップのDAW、iPhoneとiPadのホスト、Androidに届けたい。
- クローズドソースのプラグインを販売し、収益額を問わずライセンス費用をかけたくない。
- VST3やAudio Unitsに加えて、CLAPやLV2も必要である。
- コーディングエージェントがコードの大部分を書き、名前を推測ではなく確認させたい。
- ヘッダーオンリーのビルドがほしい: 1つの
plugin.cpp、CMake、バイナリにフレームワークのランタイムがない。
JUCEが今も適している場合
- 動いているJUCEのコードベースがあり、ライセンスもCLAPも移行を迫るものではない。
- チームがJUCEに精通していて、その豊富なサンプルやフォーラムの回答に頼っている。
iPlug2、DPF、Rustのフレームワークを含む、より広い分野については、オーディオプラグインフレームワークの比較を参照してください。
出典
- JUCE: ライセンス、JUCE 9 EULA、価格、JUCE 8のEULA変更、JUCE 9のリリース記事、リリース、README、CMake API、ロードマップ、2025年第3四半期、AGENTS.md
- JUCE向けのCLAP: clap-juce-extensions
- VST3のライセンス: VST 3.8の発表、VST3 SDK
- Sonore SDK: リポジトリ、はじめに、プラットフォームと形式、ネイティブエディタ、Webエディタ
よくある質問
Sonore SDKはJUCEのフォークですか?
いいえ。ゼロから書かれており、そのDSPは公開された数式から実装されていて、どのフレームワークのソースからも移植されていません。AudioProcessorValueTreeState、Component、MessageManagerなど、JUCEユーザーにはおなじみに見えるクラス名もありますが、コードはJUCEのものではなく、ソース互換でもありません。
Sonore SDKはクローズドソースの商用プラグインで使えますか?
はい。Apache-2.0のもとでライセンスされています。収益の上限も、費用も、スプラッシュ画面もなく、ソースを公開する義務もありません。配布するものには、ライセンスとNOTICEファイルを同梱してください。
JUCEの2026年の費用はいくらですか?
JUCE 9のEULAでは、Starterは年間収益または資金が$20,000までなら無料です。Indieは1ユーザーあたり月$40、または$300,000までの永続ライセンスで$800です。Proは1ユーザーあたり月$175、または永続ライセンスで$3,500で、上限はありません。無料の選択肢はAGPLv3で、これはプラグインのソースを公開することを求めます。
Sonore SDKはAAX、AUv3、iOS、Androidに対応していますか?
はい、4つすべてに対応しています。Pro Tools向けのAAX Nativeは、JUCEと同じく、ユーザー自身のAvid AAX SDKのコピーに対してビルドされます。出荷にはAvidの承認と、どちらのフレームワークでもPACEの署名が必要です。iOS向けにビルドすると、同じplugin.cppがiPhoneとiPadのアプリ内のAUv3エクステンションになります(AUv3は、iPadのホストであるGarageBand、AUM、Logic ProがiPad版で読み込む形式です)。Macでは、AUv2の隣にAUv3が作られます。AndroidのNDKでビルドすると、Androidアプリになります。
JUCEはCLAPに対応していますか?
JUCE 9.0.4ではネイティブには対応していません。CLAPはJUCE 9のロードマップにありましたが、そこには含まれませんでした。JUCEプラグインのCLAPビルドは、サードパーティのclap-juce-extensionsを使います。Sonore SDKでは、CLAPがコア形式であり、他のすべての形式がそれに適合します。