Building a Lock-Free, Zero-Allocation Audio Engine in Modern C++ Without JUCE

The author describes writing a pull-based audio engine and multi-format plugin host from scratch in C++20 for infinite, an open-source modular workstation, rather than using the widely adopted JUCE framework. At 48kHz with a 128-sample buffer, the audio callback has about 2.66 milliseconds to finish before underflow causes audible clicks. To meet hard real-time requirements, the design pre-allocates all memory during preparation, avoids mutexes in favor of atomics and lock-free ring buffers, and lays out audio data for SIMD-friendly, cache-efficient processing. The engine talks directly to VST3 and Audio Unit APIs, enabling real-time modulation of third-party plugin parameters from signals within the app. The project also includes FIELD, an embedded DSP language that compiles user-written filters into optimized per-sample vector loops without requiring C++ recompilation.
This is an AI-generated summary. ShortSingh links to the original source for the complete article.

Discussion (0)
Log in to join the discussion and vote.
Log in