A small, real‑time‑safe JUCE plugin boilerplate focused on clean separation between audio, UI, and infrastructure. The default example is a simple gain/trim plugin with a peak meter and optional SQLite‑backed presets.
- JUCE pulled via CPM (no manual install)
- Plugin formats: VST3, AU, Standalone (AAX optional)
- Real‑time audio thread rules enforced by design
- Beginner‑friendly parameter registry (single source of truth)
- Optional presets stored in SQLite
- Optional integrations: Skia UI backend, GPU Audio SDK
- CMake 3.20+
- C++17 compiler
- Git (for CPM to fetch JUCE)
Optional dependencies (only if enabled):
- SQLite3 development package
- Skia SDK
- GPU Audio SDK
- AAX SDK (for AAX builds)
Configure and build with CMake:
cmake -S . -B build
cmake --build build-DUSE_AAX=ON— enable AAX (requires AAX SDK)-DUSE_SKIA=ON -DSKIA_SDK_PATH=/path/to/skia— enable Skia UI backend-DUSE_GPU_AUDIO_SDK=ON -DGPU_AUDIO_SDK_PATH=/path/to/sdk— enable GPU Audio SDK-DUSE_SQLITE=OFF— disable SQLite presets (enabled by default)
Notes:
- If
USE_SQLITE=ONbut SQLite3 is not found, presets are disabled automatically at configure time.
assets/ # SVGs, PNGs, fonts, IR samples
cmake/ # Build logic (CPM, helpers)
docs/ # Guides: setup, parameters, presets, stack
scripts/ # Deployment/signing scripts (macOS)
src/
infra/ # Adapters + platform IO (parameters, presets)
kernel/ # Real‑time DSP core (planned)
modules/ # Domain logic (planned)
ui/ # UI components (planned)
tests/ # Offline DSP rendering + benchmarks
Parameters live in src/infra/parameters/ParameterRegistry.* and are the single source of truth for:
- processor access (
getRawParameterValue()) - UI bindings (APVTS attachments)
- presets
See docs/parameter-system.md for a beginner‑friendly walkthrough.
When USE_SQLITE=ON, presets are stored in a single SQLite database file under the user application data directory:
AbeAudio/ProGain/presets.db.
See docs/presets.md for the schema and API.
- No allocation, logging, file I/O, or locks on the audio thread.
- UI work stays on the UI thread.
- Parameters are accessed atomically.
docs/setup.md— build options and setupdocs/parameter-system.md— parameter registry guidedocs/presets.md— SQLite preset storagedocs/stack.md— tech stack overview
Current version: 0.1.0
License has not been specified yet.