Permissive by default
ISC licensed project code, with dependencies chosen for liberal licensing or public-domain availability. Ship closed or open, no fees.
YUP builds native applications, audio tools and audio plugins for desktop, mobile and the web. Permissively licensed foundations meet modern vector rendering through the open source Rive renderer.
One codebase, every CI platform
Why YUP
ISC licensed project code, with dependencies chosen for liberal licensing or public-domain availability. Ship closed or open, no fees.
Vector graphics on the Rive renderer over Metal, Direct3D, OpenGL, WebGL and WebGPU, plus a low-level RHI for compute and custom shaders.
Devices, MIDI, file formats, DSP, an audio graph, plugin hosting and plugin client wrappers all live in the same framework.
What's inside
Depend on exactly the modules you need. Transitive dependencies are pulled in by the CMake API.
yup_graphics · yup_rhi · yup_shading
2D drawing, fonts with variable axes, SVG and Lottie on top of Rive. Drop down to the RHI for compute, render pipelines, PBR and fluid simulations.
yup_gui
Components, windowing, layout, text editing, popup menus, drag and drop, multitouch and 3D components, all painted on the GPU.
yup_dsp · yup_dsp_jit
Filters and designers, crossovers, FFTs, dynamics, convolution and resampling. YDSP adds a realtime JIT-compiled DSP language.
yup_audio_graph
A node-based graph of audio processors for routing audio and MIDI, with an editor you can see in the examples.
yup_audio_plugin_*
Wrap your processor as CLAP, VST3, AU or a standalone app, and host third-party plugins in-process.
yup_python
Create and drive YUP applications from scripts, install the wheel and iterate without recompiling.
yup_ai
Chat-completion clients for OpenAI, Anthropic and Gemini, function-calling tools, embeddings and an MCP client and server.
Backends
Each platform uses its own graphics and audio APIs. Dashed items are in progress.
Developer experience
Fetch YUP with CMake, pick your modules, write your application class. The same target builds for desktop, mobile and the browser.
FetchContent#include <yup_gui/yup_gui.h>
class Application
: public yup::YUPApplication
, public yup::Timer
{
public:
yup::String getApplicationName() override {
return "yup app!";
}
yup::String getApplicationVersion() override {
return "1.0";
}
void initialise (const yup::String& commandLineParameters) override {
yup::Logger::outputDebugString (
"Starting app " + commandLineParameters);
startTimer (1000);
}
void shutdown() override {
yup::Logger::outputDebugString ("Shutting down");
}
void timerCallback() override {
stopTimer();
yup::MessageManager::callAsync ([this] { systemRequestedQuit(); });
}
};
START_YUP_APPLICATION (Application)cmake_minimum_required (VERSION 3.31)
project (my_app VERSION 1.0.0)
include (FetchContent)
FetchContent_Declare (yup
GIT_REPOSITORY https://github.com/kunitoki/yup.git
GIT_TAG main)
set (YUP_BUILD_EXAMPLES OFF)
set (YUP_BUILD_TESTS OFF)
FetchContent_MakeAvailable (yup)
yup_standalone_app (
TARGET_NAME my_app
TARGET_VERSION 1.0.0
TARGET_IDE_GROUP "MyApp"
TARGET_APP_NAMESPACE "com.mycompany"
TARGET_CXX_STANDARD 20
MODULES
yup::yup_gui
yup::yup_audio_devices)
target_sources (my_app PRIVATE main.cpp)Pick your path
No tiers, no seats, no revenue caps. The same ISC license covers apps, plugins and the web.
Native desktop and mobile apps.
Free ISC
yup_standalone_app CMake targetInstruments and effects for any DAW.
Free ISC
yup_audio_plugin CMake targetThe same app, running in the browser.
Free ISC
YUP is under active early-stage development and APIs may change. It is usable for experimentation, examples, prototypes and contributors comfortable with a fast-moving framework. Graphics and GUI, DSP, the audio graph and CLAP/VST3 plugins are the areas most ready for feedback.
YUP started from the ISC licensed JUCE7 modules and has evolved since, with its own rendering, GUI, DSP, audio graph and plugin layers. Some APIs look familiar, but do not assume they are identical.
Project code is ISC licensed: use, copy, modify and distribute for any purpose, commercial or not, keeping the copyright notice. Dependencies are chosen for liberal licensing or public-domain availability.
You can build CLAP and VST3 on Windows and macOS, plus AUv2 and AUv3 on macOS. Hosting supports CLAP and VST3 on Windows and macOS, and AUv2 on macOS. AAX, LV2 and Linux support are in progress.
Yes. Wasm builds through Emscripten render with WebGPU or WebGL2 and play audio through AudioWorklet.
The yup_python module provides bindings for creating and driving YUP applications from scripts. Run just python_install to install the Python wheel.
Clone the repository, build the examples, and have a GPU-rendered audio app running in minutes.