Out-of-source plugin projects linked to a sibling iPlug2 checkout.
CamelotSynth is an embedded-sample player built on iPlug2. Real-time audio runs in ProcessBlock; the editor is a fixed-layout IGraphics UI with transport, a Camelot note circle, gain control, and waveform. DSP lives in the shared audioagent library under src/audioagent/.
CamelotSynth (iPlug2 shell: params, UI, meter)
│
▼
SamplerEngine ──► SampleTransport ──► SamplePlayer
│ │
│ ├── PitchStreamPipeline (pitched cache / dry)
│ ├── gain (LogParamSmooth)
│ └── OutputLimiter
│
└── background: PitchStreamWorker, OfflineSampleWorker (audioFlux)
- Real-time path: sample playback, crossfades, gain, limiting — no locks, no audioFlux on the audio thread.
- Background path: note detection (PitchYIN) and quality pitch shift (~10 s blocks with read-ahead).
See src/audioagent/ARCHITECTURE.md for threading rules and DEVELOPMENT_PLAN.md for the roadmap toward composable processing chains and live RT pitch.
Dev/
├── iPlug2/ # sibling SDK (not in this repo)
└── plugins/
├── build_all.bat # build audioagent + every plugin
├── install_all.bat # install built bundles into the user VST3/CLAP folder
├── src/
│ └── audioagent/ # shared DSP + MIR + Camelot wheel library
├── CamelotSynth/ # iPlug2 plugin (uses audioagent)
├── assets/ # shared audio (gitignored)
└── scripts/ # build.ps1, install-plugin.ps1, setup, RT-audit
For agent/contributor guidance (the iPlug2 surface, RT-audio rules, known issues) see AGENTS.md.
.\scripts\setup-iplug2.ps1
.\scripts\setup-third-party.ps1 # audioFlux for audioagent
code plugins.code-workspacebuild_all.bat :: build every plugin (vst3, Release) — audioagent is compiled into each
install_all.bat :: install the built VST3s into %LOCALAPPDATA%\Programs\Common\VST3Both accept optional arguments: build_all.bat [Format] [Config] (default vst3 Release) and install_all.bat [Format] (default vst3). A "plugin" is any top-level folder containing config.h. audioagent is a header-only INTERFACE library, so it has no separate build step — it is compiled into each plugin.
$p = "CamelotSynth"
.\scripts\build.ps1 -Plugin $p -Format vst3 -Config Release -Install
.\scripts\install-plugin.ps1 -Plugin $p -Format vst3If a DAW has the plugin loaded, install stages to *.vst3.pending — close the DAW, then run install_all.bat (or install-plugin.ps1) again. Build output: <Plugin>/build/out/<Plugin>.vst3/.
| Doc | Contents |
|---|---|
| src/audioagent/README.md | Library modules, thread model, integration |
| src/audioagent/ARCHITECTURE.md | Data flow, transport, pitch pipeline |
| CamelotSynth/README.md | Plugin features, UI, processing chain |
| DEVELOPMENT_PLAN.md | RT DSP roadmap and phased tasks |
.\scripts\new-plugin.ps1 -Name MySynth -Template IPlugInstrument -Manufacturer VecnodeLink audioagent from your plugin CMakeLists.txt (see audioagent README).
This repository's own code is released under the MIT License (© 2026 vecnode). Third-party dependencies keep their own licenses — notably iPlug2 (sibling SDK) and the vendored audioFlux under third_party/.