- Blog
- Comparativa
Sonore SDK vs JUCE: la alternativa Apache-2.0 para plugins de audio
El Sonore SDK y JUCE compilan ambos VST3, Audio Units v2 y v3, AAX, LV2 y apps independientes desde C++, en Windows, macOS, Linux, iOS y Android. Lo que los separa son la licencia, CLAP y los agentes de programación. El Sonore SDK es gratuito bajo Apache-2.0 con cualquier facturación, compila CLAP de forma nativa, es solo de cabeceras y ofrece a los agentes de programación un servidor MCP. JUCE cuesta dinero una vez que superas los $20,000 anuales de facturación, salvo que publiques tu código bajo AGPLv3, y compila CLAP solo mediante una extensión de terceros. Para un plugin nuevo, eso hace del Sonore SDK la mejor opción.
En esta página
Lado a lado
| Sonore SDK | JUCE 9 | |
|---|---|---|
| Licencia | Apache-2.0 | AGPLv3, o el EULA comercial de JUCE 9 |
| Plugin de código cerrado | Gratis con cualquier facturación | Gratis hasta $20,000 de facturación anual; Indie o Pro por encima |
| CLAP | Nativo: el formato base | A través de clap-juce-extensions de terceros |
| VST3 | Sí, sobre la cabecera C de la API de Steinberg | Sí |
| Audio Units | AUv2 y AUv3 | AUv2 y AUv3 |
| AAX | AAX Native, con tu propia copia del SDK de Avid | Sí |
| LV2 | Sí | Sí |
| Plataformas | Windows, macOS, Linux, iOS, Android | Windows, macOS, Linux, iOS, Android |
| Código | Solo cabeceras; un archivo fuente por plugin | Módulos compilados en tu proyecto |
| Build | CMake 3.21+; Android sin Gradle | CMake 3.22+ o el Projucer |
| GUI | Editor nativo dibujado por el SDK, o una página HTML en el webview del sistema | Componentes de JUCE, Direct2D, interfaces WebView |
| Agentes de programación | Servidor MCP oficial, Agent Skill, llms.txt |
llms.txt y AGENTS.md |
| Última versión | 1.0.0, octubre de 2026 | 9.0.4, 12 de octubre de 2026 |
Licencia y lo que cuesta
Esta es la diferencia que los equipos notan primero. JUCE tiene doble licencia desde JUCE 8: AGPLv3, o un EULA comercial con niveles según la facturación o financiación anual.
| Nivel de JUCE 9 | Facturación o financiación | Suscripción | Perpetua |
|---|---|---|---|
| Starter | Hasta $20,000 | Gratis | Gratis |
| Indie | Hasta $300,000 | $40 por usuario al mes | $800 por usuario |
| Pro | Sin límite | $175 por usuario al mes, mínimo de 12 meses | $3,500 por usuario |
En la práctica, para un equipo de tres desarrolladores, eso supone $1,440 al año en suscripciones Indie una vez que la facturación supera los $20,000. Por encima de $300,000 son $6,300 al año en suscripciones Pro, o $10,500 una sola vez por licencias Pro perpetuas. Estas cifras salen directamente de los precios publicados. La pantalla de inicio que JUCE exigía desapareció con JUCE 8, y los precios de JUCE 9 son los mismos que los de JUCE 8.
El Sonore SDK es Apache-2.0 sin niveles: un plugin de código cerrado no cuesta nada con ninguna facturación, y con la licencia llega también su concesión de patentes. La obligación es conservar la licencia y el archivo NOTICE junto con lo que distribuyas. Las condiciones de los propietarios de formatos se aplican por igual a ambos frameworks: AAX necesita el acuerdo de Avid y la firma de PACE, y desde VST 3.8 (octubre de 2025) Steinberg ya no pide un acuerdo para distribuir un VST3.
Formatos y plataformas
CLAP es donde más difieren ambos en formatos. Las hojas de ruta de JUCE de 2024 y 2025 situaban CLAP nativo en JUCE 9, pero no se incluyó allí, así que los plugins JUCE obtienen CLAP desde clap-juce-extensions. En el Sonore SDK, CLAP es el núcleo: el wrapper de CLAP gestiona parámetros, estado y el puente del editor, y VST3, Audio Units, AAX y LV2 lo adaptan. Por tanto, un plugin no puede comportarse de forma distinta según el formato con el que lo cargue un host.
En escritorio, ambos compilan VST3, AUv2, LV2 y una app independiente en Windows, macOS y Linux, y AAX en Windows y macOS. Sonore compila todos ellos, CLAP incluido, con una sola llamada a sonore_add_plugin. El código fuente se compila una vez y se enlaza en cada bundle, y una vez más, contra el SDK de Avid, para el AAX.
En iPhone, iPad y Android, ambos compilan plugins y apps, y en Sonore es de nuevo el mismo plugin.cpp:
- AUv3.
sonore_add_auv3coloca el plugin dentro de una app como extensión de Audio Unit, el único tipo de plugin que cargan GarageBand, AUM, Cubasis y Logic Pro para iPad, y el tipo que acepta la Mac App Store. Incluye el árbol de parámetros con gestos, automatización con precisión de muestra, MIDI 1.0 y 2.0 de entrada y MIDI de salida, tempo y transporte, presets de fábrica, y el mismo estado guardado que cualquier otro formato. - Apps de iPhone y iPad. El editor se ejecuta a pantalla completa en el área segura, con sonido a través de RemoteIO y teclados MIDI mediante CoreMIDI.
- Apps de Android. El NDK compila un APK directamente desde CMake, sin Gradle. Reproduce el audio con AAudio, acepta cualquier teclado MIDI conectado y muestra cualquiera de los dos editores.
Cómo se escribe un plugin
Un plugin JUCE es una subclase de AudioProcessor con un processBlock, un AudioProcessorEditor y los módulos de JUCE compilados en el proyecto. Un plugin de Sonore es un solo archivo con tres partes: una struct de DSP, una tabla de parámetros y un descriptor.
#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>Los parámetros llegan como valores planos en el orden de la tabla, ya expresados en decibelios o hercios. El comportamiento opcional se activa declarando un miembro: latencySamples(), tailSamples(), saveState(), un sidechain o una firma process de MIDI. Los wrappers lo detectan en tiempo de compilación, y un DSP que no lo declara no paga nada por ello.
Si vienes de JUCE, algunos nombres te resultarán familiares: MidiBuffer, AudioBlock, un árbol de Component para el editor nativo, MessageManager, y un AudioProcessorValueTreeState sobre la tabla de parámetros con attachments de widgets. El SDK no es un fork y no es compatible a nivel de código fuente. El código DSP se traslada como C++ plano, mientras que la capa del plugin se reescribe con la forma de arriba. Si el plugin ya se ha distribuido, planifica cómo identificarán los hosts la nueva build, ya que cada framework deriva los ID de plugin a su manera.
Interfaces
Los Components de JUCE son un toolkit de modo retenido maduro, y JUCE 8 añadió interfaces WebView. El Sonore SDK también tiene ambas vías, en todas las plataformas:
- Un plugin sin página obtiene el editor nativo, dibujado por el SDK en su propia ventana y sin proceso de navegador. Compone el texto con kerning GPOS y shaping al estilo HarfBuzz para árabe, indio y decenas de otros sistemas de escritura, dibuja emoji en color y lee arte SVG.
- Un plugin con página entrega HTML que se abre en el webview del sistema: WebView2, WKWebView, WebKitGTK o el WebView de Android. Un puente
window.sonorelo conecta con el plugin, y sus cambios llegan al hilo de audio a través de una cola sin bloqueos.
DSP pensado para plugins
El Sonore SDK incluye una biblioteca de DSP orientada a lo que hacen realmente los plugins, implementada a partir de artículos publicados:
- modelos a nivel de circuito: un motor DK nodal, el Fuzz Face, la etapa de drive del TS-808;
- saturación de cinta y EQ de cinta;
- medición de sonoridad BS.1770 y de true-peak;
- corrección de tono y cambio de tono con phase vocoder;
- un motor granular;
- reverbs de placa, de muelle y FDN;
- dinámica desde opto hasta multibanda estilo OTT;
- bloques de construcción para synth: robo de voces, mono y legato con glide, modulación polifónica CLAP y una matriz de modulación.
Agentes de programación
JUCE publica un llms.txt y un AGENTS.md, y desde septiembre de 2026 su README pide a las herramientas de IA que avisen a sus usuarios de que puede hacer falta una licencia comercial de JUCE. No tiene un servidor MCP oficial.
El Sonore SDK se diseñó esperando que un agente escriba buena parte del código:
- El servidor MCP responde si un nombre existe y cuál es su declaración real. El CI comprueba que su búsqueda encuentra los 766 tipos públicos de las 282 cabeceras.
- La Agent Skill da a Claude Code, Codex, Cursor y Antigravity el flujo de trabajo: generar un proyecto, buscar nombres y terminar solo cuando
ctesty los validadores pasan.
Todo ello se genera desde las cabeceras, así que no puede desviarse de ellas. Cómo compilar un plugin con un agente de programación explica el proceso paso a paso.
Cuándo el Sonore SDK es la mejor opción
- Empiezas un plugin nuevo y quieres un solo archivo fuente que llegue a los DAW de escritorio, a los hosts de iPhone y iPad, y a Android.
- Vendes plugins de código cerrado y quieres cero coste de licencia con cualquier facturación.
- CLAP y LV2 te importan junto a VST3 y Audio Units.
- Un agente de programación escribe buena parte de tu código, y quieres que compruebe los nombres en lugar de inventarlos.
- Quieres una build solo de cabeceras: un
plugin.cpp, CMake, y ningún runtime de framework en el binario.
Cuándo JUCE sigue teniendo sentido
- Tienes una base de código de JUCE que funciona, y ni la licencia ni CLAP te empujan a cambiar.
- Tu equipo ya conoce JUCE y se apoya en su gran cantidad de ejemplos y respuestas de foros.
Para el panorama completo, con iPlug2, DPF y los frameworks en Rust, consulta Frameworks de plugins de audio comparados.
Fuentes
- JUCE: licencia, EULA de JUCE 9, precios, cambios en el EULA de JUCE 8, cobertura del lanzamiento de JUCE 9, versiones, README, API de CMake, hoja de ruta, T3 2025, AGENTS.md
- CLAP para JUCE: clap-juce-extensions
- Licencias de VST3: anuncio de VST 3.8, SDK de VST3
- Sonore SDK: repositorio, primeros pasos, plataformas y formatos, el editor nativo, el editor web
Preguntas
¿Es el Sonore SDK un fork de JUCE?
No. Está escrito desde cero, y su DSP se implementa a partir de matemáticas publicadas, no se adapta del código fuente de ningún framework. Algunos nombres de clase resultarán familiares a quien usa JUCE, como AudioProcessorValueTreeState, Component y MessageManager, pero el código no es de JUCE y no es compatible a nivel de código fuente con él.
¿Puedo usar el Sonore SDK en un plugin comercial de código cerrado?
Sí. Está licenciado bajo Apache-2.0: sin límite de facturación, sin tasas, sin pantalla de inicio y sin obligación de publicar tu código fuente. Conserva la licencia y el archivo NOTICE junto con lo que distribuyas.
¿Cuánto cuesta JUCE en 2026?
Según el EULA de JUCE 9, Starter es gratis hasta $20,000 de facturación o financiación anual, Indie cuesta $40 por usuario al mes o $800 perpetuo hasta $300,000, y Pro cuesta $175 por usuario al mes o $3,500 perpetuo sin límite. La alternativa gratuita es AGPLv3, que obliga a publicar el código fuente de tu plugin.
¿El Sonore SDK admite AAX, AUv3, iOS y Android?
Sí, los cuatro. AAX Native para Pro Tools se compila contra tu propia copia del SDK de AAX de Avid, como lo compila JUCE, y distribuirlo necesita la aprobación de Avid y una firma PACE en cualquiera de los dos frameworks. Compilado para iOS, el mismo plugin.cpp se convierte en una extensión AUv3 dentro de una app de iPhone y iPad (AUv3 es el formato que cargan en iPad hosts como GarageBand, AUM y Logic Pro para iPad); en Mac, un AUv3 junto al AUv2. Compilado con el NDK de Android, se convierte en una app de Android.
¿JUCE admite CLAP?
No de forma nativa en JUCE 9.0.4. CLAP estaba en la hoja de ruta de JUCE 9, pero no se incluyó en esa versión; las compilaciones CLAP de plugins JUCE usan la extensión de terceros clap-juce-extensions. En el Sonore SDK, CLAP es el formato base y todos los demás se adaptan a él.