A course in JUCE, modern C++ and shipping audio software
Build audio plugins in C++, then ship them.
From your first sine wave to a signed, licensed plugin in other people's sessions. You write real JUCE code from the first lesson and hear it as you type.
Sonic Supernova is one route through audio programming. You learn JUCE by building effects you can hear. You pick up modern C++ right before each plugin needs it. And you finish the way professionals do: tested, signed, packaged and licensed.
Thirty-seven stations.
One route.
Read each stage from top to bottom. The C++ you need comes right before the plugin that uses it, and the shipping work runs alongside from the first stage.
First sounds
Make a tone, learn what a plugin is, then control level and position.Shaping sound
Parameters the host can automate, then effects that reshape the waveform.Real time and frequency
Memory over time, the rules of the audio thread, and thinking in spectra.Seeing sound
An editor of your own, with meters, a scope and a spectrum analyser.Dynamics and your own plugin
A compressor, then a full channel strip that you validate and ship.Designed around how programmers learn.
Every module uses the same few techniques from learning research. You will notice them as habits, not as theory.
C++ arrives when you need it.
Each language feature is taught right before the plugin that first uses it, so you practise it within the hour on something you can hear.
Every lesson starts by remembering.
A warm-up of up to three questions from earlier modules opens each theory page. Recalling older material at intervals is what makes it stay.
Guess first, then press Run.
Before your first run you predict what you will hear. Each exercise becomes a small experiment, and a wrong guess is the most useful kind.
Support fades as you improve.
Fix a planted bug, rearrange the lines of the fix if you are stuck, then extend the plugin on your own with no hints at all.
Three rooms in every module.
Watch the idea, write the code, then see and hear what it did. All of it runs in your browser, with nothing to install.
The LFO runs at a few hertz, far below anything you hear as pitch. Multiply the signal by it and you hear the level rise and fall instead.
φ += 2π · rate / fs
phase += phaseInc;
C++20 and C++23, the way audio code needs it.
The audio thread has strict rules. It can't allocate memory, take a lock or wait for anything, or you hear a click. Modern C++ lets you follow those rules and have the compiler check them. Here is a tremolo's processBlock as you will write it by module F3.
- 1[[clang::nonblocking]]Clang warns at compile time if anything called from here may allocate or lock. RealtimeSanitizer catches what slips through when the plugin runs.
- 2juce::SmoothedValueRamps the depth across the block instead of jumping, which removes the zipper noise you hear when a knob moves.
- 3std::spanA view of one channel with its length attached. The range-for cannot run past the end of the buffer.
- 4std::atomicThe GUI and audio threads share the value without a lock, and the static_assert proves it is lock-free on this platform.
The Just Enough C++ track
Eleven modules, each with a memory diagram you can step through line by line.Sonic Supernova for CLion.
When an exercise is ready to become a real plugin, the CLion plugin creates the JUCE project, sets up CMake and checks your toolchain. Then it stays docked beside your code with the lesson, its checks and plain-language build errors.
Most JUCE courses split students between Xcode and Visual Studio, each with its own project files, debugger and shortcuts, on top of learning C++ and DSP. CLion runs on macOS, Windows and Linux and opens JUCE's CMake projects directly, so everyone follows one set of instructions and stays focused on the code.
No toolchain to set up by hand.
With the plugin installed, the Toolchain Doctor finds your compiler, CMake and Ninja and installs what is missing. JUCE downloads itself the first time you build.
The plugin is there if you want it.
It is optional. Projects are plain CMake, so they build from a terminal and open in other IDEs too. Experienced developers can keep the tools they know.
Free while you learn.
JetBrains has made CLion free for non-commercial use, which includes learning, since May 2025. Selling plugins counts as commercial use and needs a paid licence.
gainParameter isn't declared. Did you mean gainParam?
Expected no sample-to-sample jump above 0.01, found 0.42 at sample 512.
This is the zipper noise from F2. You need to smooth the parameter.
→ source/dsp/Tremolo.cpp:47From a build on your machine to a product people buy.
The Distribution and Licensing track covers formats, testing, signing, installers for three platforms, licensing and a storefront. You deploy the licensing yourself, on infrastructure you control.
Build and test
Sign and package
License and sell
Licensing with Keygen.sh, on your own server.
Keygen.sh manages licenses, keys and machine activations, and you can host it yourself. You pick a license model, validate keys inside the plugin, verify the signed response on the device and support offline activation for studio machines that never go online.
Then you deploy the small service around it on AWS, GCP or Scaleway, and connect your store so a sale creates a license and emails the key.
Questions
Do I need to know C++ first?
No. The Just Enough C++ track starts with values and types, and each module comes right before the JUCE module that first uses it. If you already write C++, you can skip those stops.
Do I need a background in maths or signal processing?
No. Module 00 starts with one sine wave, and each theory page shows the maths beside the code it becomes. Comfort with basic algebra helps.
Where does my code run?
In your browser. Exercises are compiled by clang to WebAssembly against real JUCE, run in an AudioWorklet and play through your speakers, with AddressSanitizer, UndefinedBehaviorSanitizer and RealtimeSanitizer catching mistakes. For your own projects, the CLion plugin generates a standard JUCE and CMake project on your machine.
Do I need CLion?
Not for the browser lessons. You need it for the CLion plugin, which turns exercises into real projects and adds the Doctor, build explanations and in-IDE checks.
Do I have to use Keygen.sh for licensing?
No. The licensing modules use Keygen.sh because you can host it yourself, and the ideas carry over to other providers: license models, activation, signed responses and offline use.
How long does the course take?
It depends on your pace. Module 00 takes about five minutes, and most modules fit in one or two sittings. The full route is designed to be followed over months.
Your first sound takes five minutes.
Module 00 has you write a sine wave, change one number and hear it change. The rest of the route builds from there.
Start with Hello, Sound