Before you start
JUCE is worth learning once you have an idea you actually want inside your DAW. If you haven’t yet proved the idea is fun, a browser prototype is a faster first step. When you’re ready, keep these expectations in mind:
- You’ll be working in C++. You don’t need to master it, but you’ll pick up the basics: classes, references, headers.
- AI assistants help a lot with JUCE, but they sometimes mix up API versions. Always tell them which JUCE version you’re on.
- Check JUCE’s licensing terms on the official site before you distribute anything.
Official resources to bookmark
- juce.com — downloads, licensing, news
- JUCE tutorials — step-by-step official tutorials, the backbone of this path
- JUCE API documentation — class reference
- JUCE on GitHub — source, examples folder, CMake docs
- JUCE forum — searchable answers to most beginner problems
For community learning, The Audio Programmer (YouTube channel and Discord community) is a widely used, friendly resource with beginner-oriented JUCE videos and a place to ask questions.
The path, stage by stage
Stage 1 — Get a blank plugin running
Goal: build the default plugin template and load it in your DAW or the JUCE AudioPluginHost.
- Install your platform’s toolchain (Xcode or Visual Studio) and download JUCE.
- Create a plugin project with the Projucer or the CMake examples in the JUCE repo.
- Build it, find the output VST3/AU, and load it.
Done when: a silent “hello world” plugin appears in a track. This is the hardest-feeling stage and the most common place people quit — push through; it gets easier.
Stage 2 — Understand the processor and editor
Goal: know what AudioProcessor and AudioProcessorEditor each do.
- The processor handles sound:
prepareToPlay(set up),processBlock(fill buffers), state save/load. - The editor is the window with knobs. It can be closed while sound keeps running.
Done when: you can make a gain plugin that turns audio up and down. Ask your AI assistant to explain each function in the template in plain English.
Stage 3 — Parameters
Goal: expose controls the host can automate and save.
- Learn
AudioProcessorValueTreeState(often shortened to APVTS) for declaring parameters. - Attach sliders to parameters so UI and host stay in sync.
- Bring over the parameter list, ranges and defaults from your prototype or scope file.
Done when: a knob moves when you draw automation in your DAW, and the value survives saving and reopening the project.
Stage 4 — Making sound: synthesis and MIDI
Goal: for instruments, respond to MIDI and generate audio.
- Work through the official synth tutorials (the
Synthesiser/ voice classes). - Build a single oscillator with an ADSR envelope before adding anything else.
Done when: you can play notes from a MIDI keyboard or piano roll without clicks.
Stage 5 — The DSP module
Goal: use JUCE’s dsp classes for filters, gain, delay and reverb.
- Learn the
ProcessorChainidea: stages connected in order, much like Web Audio nodes. - Port your prototype’s signal flow one stage at a time, listening after each.
Done when: your plugin sounds recognisably like your prototype.
Stage 6 — Real-time safety
Goal: keep the audio thread fast and glitch-free.
- No memory allocation, locks, file access or logging in
processBlock. - Smooth parameter changes (JUCE has
SmoothedValue) to avoid zipper noise. - Add these rules to your AI project rules so every suggestion respects them.
Done when: the plugin runs at small buffer sizes without crackles.
Stage 7 — UI polish
Goal: a clean, usable interface.
- Learn
LookAndFeelfor custom knob and slider styles, and basic layout withresized(). - Keep it simple; clarity beats decoration.
Stage 8 — Testing and sharing
- Test in at least two DAWs, at several sample rates and buffer sizes.
- Try validators such as Steinberg’s VST3 validator or pluginval (an open-source plugin tester).
- If you distribute: read up on macOS code signing/notarization and installers, and re-check licensing.
Learning tips for vibe coders
- Read the tutorial first, then ask the AI. The official tutorial gives you correct structure; the AI helps you adapt it.
- Keep a
SCOPE.mdand a rules file in the project — the same habit described in scope your first plugin. - Commit after every working stage. C++ errors can cascade; rolling back is cheap.
- Paste full error messages. Trimmed errors produce guessed fixes.
- Don’t skip stages 1–3. Most confusing bugs later come from misunderstanding the processor/parameter structure.
Where to go next
If you haven’t prototyped your idea yet, start with the honest guide to vibe coding plugins and the free sample pad. Spec → Scaffold includes a browser prototype for your idea, a prompt chain and a JUCE path like this one in its delivery — $49 on Gumroad, no compiled plugin included. More reading on the blog and in writing your idea.
Keep going
- Learn hub — the full path map
- What vibe coding audio plugins really means
- How to scope your first plugin
- From browser prototype to VST/AU
- A JUCE learning path
- Writing your plugin idea (intake guide) · Blog