why juce 8.
By Leandro Alvarez · · 6 min read
JUCE 8 was a real upgrade for the kind of reverb plugin Arna wants to be. Notes on what changed and what it lets us do.
we're a small shop. juce is the right altitude.
Arna is one developer plus a tightly scoped DSP collaborator. We don't have the runway to write our own plugin host abstraction, our own GUI framework, or our own VST3 SDK wrapper. JUCE has been the standard answer to that problem for fifteen years, and JUCE 8 sharpened it in places we care about.
the things we lean on.
1. The audio thread is real-time-clean.
JUCE's AudioProcessor contract is explicit: no allocations, no locks, no blocking syscalls inside processBlock. JUCE 8 added better static-analysis hooks and a stricter AudioProcessorParameter path that makes it easier to verify those guarantees in CI. We run a custom torture battery on every commit; JUCE 8 made that battery shorter and more honest.
2. The graphics layer finally takes corners off.
Arna's UI is restrained — cream knobs on an orange field, no chrome, no skeumorphism — but the corners we draw, we draw deliberately. JUCE 8's graphics improvements (anti-aliased dashed strokes, predictable text shaping across macOS and Windows, sharper sub-pixel positioning) let us ship the same UI on every host without per-platform fudge.
3. Universal binaries are first-class.
Apple Silicon and Intel from a single bundle, no special build flags. JUCE 8 also tightened the AU validation path so auval succeeds on the first try in Logic Pro on a clean install — a problem that used to eat a half-day of triage on every release.
4. The MPE/MIDI surface improved.
The Full edition has a 14-key MIDI strip across the bottom for triggering pitched chords through the reverb. JUCE 8's revised MIDI input pipeline and clearer MPE handling made that strip work the same in REAPER, Logic, and Ableton on day one. We did not have to write per-host glue.
what we still wrap by hand.
JUCE is opinionated about look-and-feel and about the parameter automation surface. We override both in places. The knob is rendered through our own SVG/Canvas painter so it stays identical pixel-for-pixel across hosts; the parameter smoothing layer is custom because JUCE's default smoother fights the brain's audio-rate modulation.
That is normal. JUCE is not a cage — it is a baseline. The work that matters in a reverb plugin (the DSP, the brain, the visual journey) sits on top of JUCE, not inside it.
would we use it again.
Yes. The combination of JUCE 8 + pluginval Level 10 + ctesthas been the single biggest reason Arna is shippable as a one-person operation. If you are building an audio plugin in 2026 and you don't already have a religion about a different stack, JUCE 8 is the right starting point.
what is a diffgfdn?
A plain-English tour of the reverb topology that powers Arna.