Sound & InteractionDSP · Frontend · Audio programming

Reverbo

Full-chain audio plugin: DSP signal processing in C++/JUCE with a custom UI built in Svelte delivered via Webview.

C++JUCEDSPSvelteWebview
Reverbo

Narrative & Inspiration

Digital signal processing is foundational to how machines perceive and generate the world — audio, video, sensor data, many generative models run on DSP under the hood. I am drawn to it not just as a technical discipline, but because I see opportunities to apply DSP thinking to acoustic monitoring, soundscape analysis, ecological sensing and human-computer interaction.

The immediate context was the Audio Programming class at MAT. The brief: build an audio plugin. Rather than building a standard interface, I saw an opportunity to bring my frontend web development skills into the DSP world. Most audio plugins are built entirely in C++ with native GUIs. Mine separates concerns: DSP runs in C++/JUCE on one thread, the UI runs as a Svelte web application delivered via Webview on another.

Technical Detail

  • DSP architecture built in C++ with JUCE, organized in discrete processing stages: Early Reflections, Diffusion Network (chorus, crossover filter, delay lines, feedback matrix, LFO), FDN Reverb (feedback delay network with freeze), and Input/Output gain stages.
  • UI layer is a Svelte application running inside a Webview component, fully decoupled from the audio thread. Communication between layers uses JUCE's message-passing system — no shared mutable state between threads.
  • 20+ parameters across three types: continuous knobs (decay, size, diffusion, damping, dry/wet, pre-delay, stereo width, frequencies), toggles (freeze, filters, chorus enable), and discrete selectors (smoothing, density, reverb mode).
  • Plugin is open source and distributed as a free download on GitHub. Packaging and distribution required understanding the full plugin lifecycle beyond just writing DSP code.

Learnings

  • The most transferable insight is architectural: separating interface concerns from processing concerns makes both easier to reason about and easier to change. This is true in audio plugins, but also in data applications.
  • First DSP project where I learned about memory allocation, C++ and JUCE, and the importance of smooth parameter transitions — abrupt changes in knob values create audible artifacts.


More Information
Icon Realiza
Italo Rojas 2026