# Sonore SDK vs JUCE: альтернатива JUCE на Apache-2.0 для аудиоплагинов

Автор: Sonorie. Опубликовано 2026-10-27, последнее изменение: 2026-10-27. https://sonore.dev/ru/blog/sonore-sdk-vs-juce/

Sonore SDK и JUCE оба собирают VST3, Audio Units v2 и v3, AAX, LV2 и автономные приложения из C++ на Windows, macOS, Linux, iOS и Android. Различаются они лицензией, CLAP и поддержкой агентов для кода. Sonore SDK бесплатен по Apache-2.0 при любом доходе, собирает CLAP нативно, является header-only и даёт агентам для кода MCP-сервер. JUCE стоит денег, как только годовой доход превышает $20 000, если только вы не выпускаете исходный код по AGPLv3, а CLAP собирается только через стороннее расширение. Поэтому для нового плагина Sonore SDK — более удачный выбор.

## Сравнение бок о бок

| | Sonore SDK | JUCE 9 |
| --- | --- | --- |
| Лицензия | Apache-2.0 | AGPLv3 или коммерческое EULA JUCE 9 |
| Закрытый плагин | Бесплатно при любом доходе | Бесплатно до $20 000 дохода в год; Indie или Pro выше этого порога |
| CLAP | Нативно: основной формат | Через сторонние clap-juce-extensions |
| VST3 | Да, через заголовок C API от Steinberg | Да |
| Audio Units | AUv2 и AUv3 | AUv2 и AUv3 |
| AAX | AAX Native, с вашей копией SDK от Avid | Да |
| LV2 | Да | Да |
| Платформы | Windows, macOS, Linux, iOS, Android | Windows, macOS, Linux, iOS, Android |
| Код | Header-only; один исходный файл на плагин | Модули, компилируемые в ваш проект |
| Сборка | CMake 3.21+; Android без Gradle | CMake 3.22+ или Projucer |
| GUI | Нативный редактор, нарисованный SDK, или HTML-страница в webview ОС | JUCE Components, Direct2D, интерфейсы на WebView |
| Агенты для кода | Официальный MCP-сервер, Agent Skill, `llms.txt` | `llms.txt` и `AGENTS.md` |
| Последняя версия | 1.0.0, октябрь 2026 | 9.0.4, 12 октября 2026 |

## Лицензия и её стоимость

Это различие команды замечают первым делом. С JUCE 8 JUCE распространяется под двойной лицензией: AGPLv3 или коммерческое EULA с уровнями, которые определяются годовым доходом или объёмом финансирования.

| Уровень JUCE 9 | Доход или финансирование | Подписка | Бессрочная |
| --- | --- | --- | --- |
| Starter | До $20 000 | Бесплатно | Бесплатно |
| Indie | До $300 000 | $40 на пользователя в месяц | $800 на пользователя |
| Pro | Без ограничений | $175 на пользователя в месяц, минимум 12 месяцев | $3 500 на пользователя |

На практике для команды из трёх разработчиков это составляет $1 440 в год по подпискам Indie, как только доход превышает $20 000. Свыше $300 000 это $6 300 в год по подпискам Pro или $10 500 единовременно за бессрочные лицензии Pro. Эти цифры взяты непосредственно из опубликованных цен. Заставка, которую JUCE раньше требовал, исчезла вместе с JUCE 8, а цены JUCE 9 такие же, как у JUCE 8.

Sonore SDK распространяется под Apache-2.0 без уровней: закрытый плагин не стоит ничего при любом доходе, и патентный грант лицензии идёт в комплекте. Обязанность одна — сохранять файлы лицензии и NOTICE вместе с тем, что вы распространяете. Условия владельцев форматов относятся к обоим фреймворкам одинаково: AAX требует соглашения с Avid и подписи PACE, а с VST 3.8 (октябрь 2025) Steinberg больше не требует соглашения для распространения VST3.

## Форматы и платформы

**CLAP** — главное место, где форматы двух фреймворков различаются. Дорожные карты JUCE за 2024 и 2025 годы обещали нативный CLAP в JUCE 9, но он в этот релиз не вошёл, поэтому плагины на JUCE получают CLAP через [clap-juce-extensions](https://github.com/free-audio/clap-juce-extensions). В Sonore SDK CLAP — это ядро: CLAP-обёртка управляет параметрами, состоянием и мостом редактора, а VST3, Audio Units, AAX и LV2 адаптируют его. Поэтому плагин не может вести себя по-разному в зависимости от того, какой формат загрузил хост.

**На десктопе** оба фреймворка собирают VST3, AUv2, LV2 и автономное приложение на Windows, macOS и Linux, а AAX — на Windows и macOS. Sonore собирает все эти форматы, включая CLAP, одним вызовом `sonore_add_plugin`. Исходный код компилируется один раз и линкуется в каждый бандл, а для AAX — ещё раз, против SDK от Avid.

**На iPhone, iPad и Android** оба фреймворка собирают плагины и приложения, и в Sonore это снова тот же `plugin.cpp`:

- **AUv3.** `sonore_add_auv3` помещает плагин внутрь приложения как расширение Audio Unit. Это единственный тип плагинов, который загружают GarageBand, AUM, Cubasis и Logic Pro для iPad, и тот тип, который принимает Mac App Store. Он несёт дерево параметров с жестами, сэмпл-точную автоматизацию, MIDI 1.0 и 2.0 на входе и выходе, темп и транспорт, заводские пресеты и то же сохранённое состояние, что и любой другой формат.
- **Приложения для iPhone и iPad.** Редактор работает на весь экран в безопасной зоне, звук идёт через RemoteIO, а MIDI-клавиатуры подключаются через CoreMIDI.
- **Приложения для Android.** NDK собирает APK прямо из CMake, без Gradle. Звук идёт через AAudio, принимаются все подключённые MIDI-клавиатуры, а показать можно любой из редакторов.

## Как пишется плагин

Плагин JUCE — это подкласс `AudioProcessor` с `processBlock`, `AudioProcessorEditor` и модулями JUCE, скомпилированными в проект. Плагин Sonore — это один файл из трёх частей: структура DSP, таблица параметров и дескриптор.

```cpp
#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 не является форком и не совместим с исходным кодом JUCE. Код DSP переносится как обычный C++, а оболочка плагина переписывается в форме, показанной выше. Если плагин уже выпущен, продумайте, как хосты будут распознавать новую сборку, ведь каждый фреймворк формирует идентификаторы плагинов по-своему.

## Интерфейсы

Components JUCE — зрелый инструментарий с удержанием режима (retained-mode), а JUCE 8 добавил интерфейсы на WebView. В Sonore SDK есть оба пути на каждой платформе:

- **Плагин без страницы** получает нативный редактор, который SDK рисует в собственном окне без браузерного процесса. Он выставляет текст с кернингом GPOS и шейпингом в духе HarfBuzz для арабского, индийских и десятков других письменностей, рисует цветные эмодзи и читает SVG-графику.
- **Плагин со страницей** поставляет HTML, который открывается в webview операционной системы: WebView2, WKWebView, WebKitGTK или WebView Android. Мост `window.sonore` связывает страницу с плагином, а её правки попадают в аудиопоток через lock-free очередь.

## DSP, созданный для плагинов

Sonore SDK включает библиотеку DSP, ориентированную на то, что плагины на самом деле делают, и реализованную по опубликованным статьям:

- модели на уровне схемы: нодальный движок DK, Fuzz Face, ступень драйва TS-808;
- насыщение лентой и эквалайзер для ленты;
- измерение громкости по BS.1770 и измерение true-peak;
- коррекция высоты тона и сдвиг высоты через фазовый вокодер;
- гранулярный движок;
- плейт-, пружинный и FDN-ревербераторы;
- динамика от опто-компрессоров до многополосной в духе OTT;
- строительные блоки синтезатора: перехват голосов, моно и легато с глайдом, полифоническая модуляция CLAP и матрица модуляции.

## Агенты для кода

JUCE публикует `llms.txt` и `AGENTS.md`, а с сентября 2026 года его README просит ИИ-инструменты сообщать пользователям, что может потребоваться коммерческая лицензия JUCE. Официального MCP-сервера у него нет.

Sonore SDK создавался в расчёте на то, что агент напишет большую часть кода:

- **MCP-сервер** отвечает, существует ли имя и каково его реальное объявление. CI проверяет, что поиск находит все 766 публичных типов в 282 заголовочных файлах.
- **Agent Skill** даёт Claude Code, Codex, Cursor и Antigravity рабочий процесс: сгенерировать проект, искать имена и завершать работу только тогда, когда `ctest` и валидаторы проходят.

Всё это генерируется из заголовков, поэтому не может разойтись с ними. [Как собрать плагин с помощью агента для кода](/ru/blog/build-audio-plugin-with-ai-coding-agent/) — пошаговое руководство.

## Когда Sonore SDK — лучший выбор

- Вы начинаете новый плагин и хотите, чтобы один исходный файл доходил до десктопных DAW, хостов для iPhone и iPad и Android.
- Вы продаёте закрытые плагины и хотите не платить за лицензию при любом доходе.
- CLAP и LV2 важны для вас наравне с VST3 и Audio Units.
- Агент для кода пишет значительную часть вашего кода, и вы хотите, чтобы он проверял имена, а не придумывал их.
- Вам нужна сборка header-only: один `plugin.cpp`, CMake и никакого рантайма фреймворка в бинарнике.

## Когда JUCE всё ещё имеет смысл

- У вас есть работающая кодовая база на JUCE, и ни лицензия, ни CLAP не заставляют её менять.
- Ваша команда уже знает JUCE и опирается на большой набор примеров и ответов на форумах.

Более широкую картину, с iPlug2, DPF и фреймворками на Rust, смотрите в статье [Сравнение фреймворков для аудиоплагинов](/ru/blog/audio-plugin-frameworks-compared/).

## Источники

- JUCE: [лицензия](https://github.com/juce-framework/JUCE/blob/master/LICENSE.md), [EULA JUCE 9](https://juce.com/legal/juce-9-licence/), [цены](https://juce.com/get-juce/), [изменения EULA JUCE 8](https://forum.juce.com/t/amendments-to-the-juce-end-user-licence-agreement-for-juce-8/61265), [освещение релиза JUCE 9](https://www.kvraudio.com/news/juce-9-now-available-67802), [релизы](https://github.com/juce-framework/JUCE/releases), [README](https://github.com/juce-framework/JUCE/blob/master/README.md), [CMake API](https://github.com/juce-framework/JUCE/blob/master/docs/CMake%20API.md), [дорожная карта, Q3 2025](https://juce.com/blog/juce-roadmap-update-q3-2025/), [AGENTS.md](https://github.com/juce-framework/JUCE/blob/master/AGENTS.md)
- CLAP для JUCE: [clap-juce-extensions](https://github.com/free-audio/clap-juce-extensions)
- Лицензирование VST3: [анонс VST 3.8](https://forums.steinberg.net/t/vst-3-8-0-sdk-released/1011988), [VST3 SDK](https://github.com/steinbergmedia/vst3sdk)
- Sonore SDK: [репозиторий](https://github.com/SonorieAI/sonore-sdk), [начало работы](/docs/getting-started/), [платформы и форматы](/docs/platforms-and-formats/), [нативный редактор](/docs/native-editor/), [веб-редактор](/docs/web-editor/)

## Вопросы

### Sonore SDK — это форк JUCE?

Нет. Он написан с нуля, а его DSP реализован по опубликованной математике, а не адаптирован из исходного кода какого-либо фреймворка. Некоторые имена классов покажутся знакомыми пользователям JUCE, например `AudioProcessorValueTreeState`, `Component` и `MessageManager`, но код не принадлежит JUCE и не совместим с ним на уровне исходников.

### Можно ли использовать Sonore SDK в закрытом коммерческом плагине?

Да. Он распространяется под Apache-2.0: без ограничения по доходу, без платы, без заставки и без обязанности публиковать исходный код. Сохраняйте файлы лицензии и NOTICE вместе с тем, что вы распространяете.

### Сколько стоит JUCE в 2026 году?

По EULA JUCE 9 Starter бесплатен до $20 000 годового дохода или финансирования, Indie стоит $40 на пользователя в месяц или $800 бессрочно при доходе до $300 000, а Pro стоит $175 на пользователя в месяц или $3 500 бессрочно без ограничений. Бесплатная альтернатива — AGPLv3, которая требует публикации исходного кода вашего плагина.

### Поддерживает ли Sonore SDK AAX, AUv3, iOS и Android?

Да, все четыре. AAX Native для Pro Tools собирается против вашей собственной копии AAX SDK от Avid, как это делает и JUCE, а для выпуска нужны одобрение Avid и подпись PACE в обоих фреймворках. При сборке для iOS тот же `plugin.cpp` становится расширением Audio Unit v3 (AUv3) внутри приложения для iPhone и iPad (AUv3 — формат, который загружают хосты для iPad вроде GarageBand, AUM и Logic Pro для iPad); на Mac — AUv3 рядом с AUv2. При сборке с NDK Android он становится приложением для Android.

### Поддерживает ли JUCE CLAP?

Нативно — нет, не в JUCE 9.0.4. CLAP был в дорожной карте JUCE 9, но в неё не вошёл; CLAP-сборки плагинов JUCE используют сторонний пакет clap-juce-extensions. В Sonore SDK CLAP — основной формат, а все остальные форматы адаптируют его.
