A curated list of awesome resources, tools, patches and projects for Cmajor β a C-family programming language for writing fast, portable audio DSP.
Cmajor is built by Cmajor Software Ltd (formerly Sound Stacks), founded by Julian Storer, the original author of JUCE. It compiles DSP graphs to native code via LLVM or to WebAssembly, runs the same source on CPUs, in DAWs and in browsers, and packages everything as a self-contained patch with an optional web-tech GUI.
- Official Resources
- Documentation
- Tools & Editor Support
- Official Example Patches
- Community Patches & Plugins
- Embedding & Integration
- Machine Learning
- Talks & Videos
- Community
- Related Projects
- cmajor.dev β Official home page and documentation hub.
- cmajor-lang/cmajor β The main public repository: compiler, command-line tools, C++ API, JavaScript API and examples.
- Releases β Prebuilt binaries for macOS, Windows and Linux.
- Issue tracker β Bug reports, feature requests, and a searchable archive of past answers.
- cmajor-lang on GitHub β The organisation, including the docs site and dependency forks.
- Licence terms β Read these before shipping a commercial product; the language, tools and runtime are not all covered by the same terms.
- Getting Started β Install paths, first patch, and the
cmajcommand-line tool. - Language Reference β The full language: processors, graphs, streams, events, value types, generics and namespaces.
- Standard Library β
std::oscillators,std::filters,std::envelopes,std::notes,std::mixersand friends. - Patch Format β The
.cmajorpatchmanifest, resources, GUI folder, and the export routes to CLAP/VST/AU/Web Audio. - Test File Format β Writing
.cmajtestunit tests for DSP code, run withcmaj test. - Script File Format β JavaScript-driven build and render scripts.
- C++ API β Loading, JIT-compiling and rendering patches from a C++ host.
- Quick Start (repo copy) β The same guide, versioned alongside the source.
- Cmajor for VS Code β The official extension: syntax highlighting, one-click toolchain install,
Cmajor: Create a new patch, and patch playback from the command palette. The fastest way in. cmajcommand-line tool β Ships with the release bundle. The workhorse commands:cmaj play <patch>β Render a patch live to your audio device.cmaj test <file.cmajtest>β Run a DSP test suite.cmaj generate --target=cppβ Emit dependency-free C++ that needs no JIT at runtime.cmaj generate --target=webaudio-htmlβ Emit a standalone HTML/JS/WASM bundle.cmaj generate --target=juceβ Emit a JUCE project for a native VST3/AU/AAX build.cmaj generate --target=clapβ Emit a native CLAP plugin project.
- Cmajor VST/AU plugin β A host plugin that loads and hot-reloads
.cmajorpatchfiles inside any DAW, so you can iterate on DSP without restarting the session.
All of these live in examples/patches and are catalogued at cmajor.dev/docs/Examples.
- HelloWorld β The smallest possible patch. Start here.
- Tremolo β Minimal modulation effect, and the basis of the ADC workshop below.
- RingMod β Ring modulator paired with a hand-written GUI.
- FilterEQ and PirkleFilters β Filter design, including ports from Will Pirkle's books.
- ZitaReverb β A port of the well-known Zita reverb algorithm.
- 808 β Classic drum machine voice synthesis.
- Piano and ElectricPiano β Physically-inspired and sample-driven instruments.
- TunedBar β Modal synthesis of a struck bar.
- Pro54 β A full polyphonic analogue-style synth, and the flagship demonstration of what the language can do at scale.
- GuitarLSTM β Neural amp modelling running inside a patch.
- Replicant β Port of the Maximilian example of the same name.
- CompuFart β Yes, really. See the community repo below.
- alexmfink/compufart β A fart synthesizer and the algorithm behind it. Genuinely instructive, and the origin of the official example.
- lilyvanoekel/percupuff β Drum synthesizer with a TypeScript/React UI, building to CLAP, VST3, a standalone binary or WebAssembly. One of the best end-to-end references for how to structure a real project.
- lilyvanoekel/Oscilluna β Creative synth with user-designable waveforms, shipping as VST3 and CLAP.
- olilarkin/cmajor_pirklefilters β Will Pirkle's filter designs ported to Cmajor.
- olilarkin/cmajor_replicant β Port of the Maximilian "replicant" example.
- loowps/cmajor-orrery β Polymetric, variable-step-size MIDI sequencer with a Vue UI.
- loowps/cmajor-cloud-chamber β Granular synthesizer with 8 individual play heads and a Vue UI.
- loowps/cmajor-angular β Simple gain patch with an Angular GUI.
- loowps/cmajor-vue β Simple gain patch with an Vue.js GUI.
#cmajorpatchon GitHub β Tag your own patch repositories with this topic so others can find them.
- C++ API β Embed the JIT engine in a host app, or use
cmaj::JUCEPluginFormat, ajuce::AudioPluginFormatthat scans for and loads patches as though they were plugins. - Ahead-of-time C++ generation β
cmaj generate --target=cpptranslates Cmajor into plain C++ with no runtime dependency on the compiler. This is the route to embedded targets and locked-down plugin formats. - Web Audio / WebAssembly export β Emit a dependency-free HTML/JS bundle, or take just the JS classes and wire them into an existing site.
cmaj_apiJavaScript helpers βpatchConnectionand friends: the bridge between a patch's parameters and events and a web GUI.- free-audio/clap-wrapper β Wraps a CLAP into VST3/AU. Used by Cmajor's CLAP export path.
- cmajor-lang/clap-example β A worked example of building the Pro54 synth as a CLAP plugin.
- Machine Learning docs β Running inference inside a patch, with the supported operator lists for each backend.
- ONNX support β Import models exported from PyTorch or TensorFlow via ONNX.
- RTNeural β Real-time-safe neural inference library, supported as a Cmajor backend.
- cmajor-lang/GuitarLSTM β LSTM amp and pedal emulation models, the source of the GuitarLSTM example patch.
- SoundStacks' New Cmajor Platform β ADC22. Julian Storer, Cesare Ferrari, Lucas Thompson and Harriet Drury introduce the language and the platform. The best single starting point.
- Introduction to Cmajor & SoundStacks β Julian Storer and Cesare Ferrari with The Audio Programmer.
- cmajor-lang/ADC23_workshop β The tremolo example code from the ADC 2023 Cmajor workshop, so you can follow along from scratch.
- WolfTalk #032: Julian Storer β Long-form interview with the creator of JUCE, covering the thinking that led to Cmajor.
- Cmajor channel on The Audio Programmer Discord β Channel where the core team can be reached.
- KVR Audio DSP forum thread β Long-running discussion of the language from outside the project.
- Cmajor Software on LinkedIn β Release and event announcements.
- SOUL β The earlier language from the same team, which Cmajor supersedes. Useful background reading; not a basis for new work.
- JUCE β The C++ framework Cmajor exports plugin projects to.
- CHOC β Julian Storer's header-only C++ utility collection, used throughout the Cmajor codebase.
- Faust β The other major DSP language targeting many backends, and the closest point of comparison.
- CLAP β The open plugin format Cmajor exports to natively.
- Awesome Audio DSP β Broader list of DSP learning resources and libraries.
- Awesome Music DSP β Long-standing catalogue of audio DSP libraries and tools.
Contributions are welcome. Please read the contribution guidelines first β in short: one item per pull request, a one-line description of why the resource is worth someone's time, and no self-promotion of empty repositories.