Year: 2025

Chaos, Logic, and Physics

Every audio developer faces chaos. For five years, I channeled it - along with logic and physics - to build Audiocube, a fully 3D DAW inside Unity, starting with zero development experience. This talk is a deep dive into that journey.

We'll explore the unique technical challenges of building "Ableton in a game engine," from implementing real-time acoustic simulation to designing interactive physics-based audio systems - all while working with (and around) Unity.

But building a tool is only half the battle. We will also dissect the critical business and marketing decisions that turned a passion project into a commercial product. You'll get a look at the entire lifecycle: from initial concept, design, production, and seemingly impassable roadblocks to an eventually successful public launch and the realities of monetization and growth. This is the talk I wish I had when I started.

I’m excited to share insights into the deep technical challenges of 3D audio software development, along with practical business lessons from my journey as a solo founder, from zero to monetization.

Filed under: Uncategorized

Building Inclusive Audio Tools

ADC-MAINIn this talk, I will demonstrate how accessibility is not a feature, but a foundation—especially in audio software. Using a mature front-end toolkit and WAI-ARIA (Accessible Rich Internet Applications) attributes, I’ll show how developers can build interfaces that are both powerful and inclusive, without compromising on complexity or creativity.
Drawing from a range of audio projects I’ve built—synthesizers, sequencers, and sound design tools—I’ll walk through how ARIA roles, properties, and states can be applied effectively. I’ll share practical examples of making sliders, dropdowns, mod matrices, and other complex UI components screen reader–friendly. The aim is to demystify accessibility and prove it can be integrated from the ground up with thoughtful markup and interaction design.
In addition to implementation, I’ll touch on the broader accessibility landscape, including guidelines from WCAG (Web Content Accessibility Guidelines) and standards from ETSI (European Telecommunications Standards Institute). These provide essential frameworks that help ensure our tools can be used by everyone—including blind and low vision users, keyboard-only users, and others with diverse needs.
Whether you're building DAWs, plugins, or experimental instruments, this talk will equip you with the knowledge and mindset to make your audio software accessible by design.

Who It’s For:

Audio developers working on web or native interfaces, tool designers, and anyone interested in creating more inclusive audio tech.

Takeaways:

  • How to apply ARIA attributes to real-world UI components
  • Common accessibility pitfalls and how to avoid them
  • Overview of WCAG and ETSI standards relevant to audio interfaces
  • Techniques for testing and validating accessibility in practice
Filed under: Uncategorized

Building an Optimized DSP Framework in Modern C++

The introduction of C++23 and upcoming C++26 features have significantly expanded the potential for building expressive, manageable embedded domain-specific languages (EDSLs) that compile efficiently into optimized lower-level representations. Features like enhanced constexpr and consteval execution enable a single, descriptive and clear representation of audio DSP algorithms to generate multiple optimized versions tailored to specific execution contexts and runtime constraints.

Inspired by successful libraries such as Halide and Eigen, we will look at a prototype C++ library developed to explore clean separation between algorithm description, data structures, and execution strategies. It generalizes inner-loop optimizations vectorized across two dimensions, enabling consistent application of advanced optimization techniques across diverse DSP algorithms. The library provides us a collection of design patterns that we can use to formulate how a contemporary C++23/26 audio graph can be built.

This talk will explore practical techniques and simple examples for implementing these design patterns in modern C++, demonstrating how they collectively form a robust framework for defining and executing efficient DSP algorithms:

  • Zero-cost Compile-time / Runtime Variant Values: Approaches to building scalar compile-time-constant and runtime-variant values, as well as more complex aggregate / property tree data structures, without incurring memory or performance penalties.
  • Parametric Data Structures: Designing simple, readable data structures that can be optimized cache friendly access and vectorization.
  • Expression Templates: Using C++'s template metaprogramming to defer computation, enabling optimized evaluation and graph transformations.
  • Loop and Data Optimizations: Techniques for loop-invariant value hoisting, re-blocking, and linearization to improve memory and execution efficiency.
  • Finite Difference Optimization: Automated optimizations for polynomials, trigonometric functions, and interpolation routines to minimize runtime computation.
  • Unified Parallelism Models: Integrating voice-parallel and time-parallel computations within a single descriptive graph representation.
  • Compile-time Graph Transformations: Leveraging constexpr to construct and optimize directed graphs representing DSP signal flows, including handling feedback loops and delays.
  • Benchmarking Execution Strategies: Describing, benchmarking, and comparing graph execution strategies (time-parallel, voice-parallel, block-based), enabling parametric, empirical optimization decisions.
  • Empirical Validation: Investigating whether and how these techniques improve DSP performance in realistic scenarios, with comparisons against established commercial and OS audio engines.

By applying these strategies, we demonstrate how a single algorithmic representation can flexibly handle multiple DSP use-cases—from polynomial interpolation and envelope generation to buffer read/write operations—significantly reducing redundant code and enabling focused optimization.

Furthermore, separating algorithm logic from execution strategies allows parameterizing benchmarks and optimizations based on CPU architecture and usage patterns, preserving algorithm clarity without embedding machine-specific details.

These strategies will be presented individually so they can be applied immediately in existing audio code-bases, and demonstrated within a unified framework context to highlight potential improvements in code clarity, performance, maintainability, testing, and benchmarking. Topics will be accessible for moderate-to-advanced C++ programmers, and anyone interested in exploring cutting-edge practices in modern audio DSP programming. Attendees will gain actionable insights, directly applicable techniques, and inspiration for advancing audio DSP code performance and clarity with modern C++.

Filed under: Uncategorized

Lock-free Queues in the Multiverse of Madness

Lock-free queues are the unsung heroes of audio software systems, quietly enabling ultra-low latency and thread-safe communication across a dizzying variety of scenarios. But just like navigating a multiverse, the world of lock-free queues is filled with many different variants-each with their own quirks, trade-offs, and hardware demands.

In this talk, we’ll embark on a journey through this multiverse, starting with the simplest dimension: the single-producer, single-consumer queue. We’ll uncover why lock-free designs often outshine traditional lock-based approaches in real-time audio environments, and explore various implementations along with their pros and cons.

From there, we’ll warp into more complex realities featuring single-producer, multi-consumer and multi-producer, multi-consumer queues. Along the way, we’ll tackle mind-bending concepts like memory ordering, cache coherence, and platform-specific behaviour.

By the end of this adventure, you’ll have the insight needed to confidently select and implement the perfect lock-free queue for your audio projects-no matter how mad the multiverse gets.

Filed under: Uncategorized

Driving Chaos

What happens when analog circuits behave unpredictably, or even chaotically? This talk dives into the fascinating world of non-linear dynamical systems and their applications in audio circuit modelling. You'll be introduced to key concepts like chaos, bifurcations, and attractors through intuitive explanations and classic examples such as the Lorenz attractor and the Chua circuit—the simplest known circuit to exhibit chaotic behaviour.

We'll then explore how to apply Wave Digital Filters (WDFs)—a technique for virtual analog modelling of analog circuits—to the real-time simulation of the Chua circuit, and make it a valuable tool for creating unique sonic textures and virtual analog effects.

No background in chaos theory or advanced maths is required, just curiosity and an interest in audio DSP modelling. Whether you're into experimental sound design or exploring modelling techniques, this session offers a practical starting point to the chaotic side of audio circuits.

Filed under: Uncategorized

ADC 2015 to 2035

The 10th anniversary of ADC is a great excuse for a look back at how our industry has changed over the last decade. And thanks to the huge disruption that AI is having on the whole tech sector right now, 2025 is also a very relevant time to try to make some educated guesses about where it’s all heading.

This is too big a topic for one person to tackle on their own. But after 25 years in the audio industry, I’m lucky to be connected with a lot of the key people - so my plan for this talk is to call on the movers, shakers, and big thinkers in the audio world, and find out what they think.

And then, I’ll attempt to summarise and present all their opinions into a narrative, making it as useful (and entertaining) as possible, and will add my own twists.

Obviously a lot of this talk will depend on the opinions that people share with me, but the sort of questions I want to ask them include:

  • Statistics: how much has audio tech economy grown? Will it continue?
  • What were the biggest changes in the last 10 years? What hasn’t changed?
  • How has coding changed?
  • What aspects of the future do most gurus agree or disagree on?
  • What range of optimism/pessimism are industry leaders feeling?
  • How is audio doing compared to our neighbouring tech sectors, e.g. video?
  • What are the important past and future trends in terms of hardware vs software?
  • What should someone new to the industry be learning or focusing on right now?
  • Are we heading for AI doom, or AI utopia?
Filed under: Uncategorized

Real-Time, Low Latency and High Temporal Resolution Spectrograms

This talk describes the proof of concept implementations of Resonate, a low latency, low memory footprint, and low computational cost algorithm to evaluate perceptually relevant spectral information from audio signals. A walk through the open source Swift, C++ and Python implementations outlines the basic principle of the algorithm, highlights critical implementation design elements and areas for potential improvements. The talk also features a few illustrative real-time audio analysis applications.

Filed under: Uncategorized

Using Strongly-Typed Units in Digital Audio Software

API or math mistakes with units can cause problems ranging from a digital audio processing outputting silence to crashing your Mars rover—we’ll discuss real-life examples of both! There are efforts to solve these problems in the C++ standard library and open-source libraries that can be used today by audio developers.

The combination of user-defined types, conversion operators/constructors, and operator overloading in C++ give us the tools to use strong-types and avoid unit mistakes; std::chrono is a great example of this that everyone should be using. Unfortunately, when dealing with units beyond time many developers still use primitive types encoding units in variable names or comments.

This talk will provide an overview and update on progress of the proposed units library described in “P3045: Quantities and units library” which is currently going through standardization for C++29 and an update on progress. There will also be an introduction to mp-units, the open-source implementation of the proposed standard library features that you can use today.

To demonstrate how the proposed standard library can be extended to custom domains, extensions implementing various quantities and units used in digital audio / DSP that go beyond “physical” units. This will be code you can use today using mp-units and we are looking for industry experience and feedback!

We will close with a request for feedback and questions to see if these APIs will work for you.



Filed under: Uncategorized

Safe and Sound

Rust is a systems programming language that offers strong safety guarantees, fearless concurrency, and real-time performance. It's a great fit for writing audio applications, but many of the mature libraries in this space are written in C++. How can we bridge that gap and make use of these C++ audio libraries in Rust?

In this talk, we will explore techniques for integrating C++ libraries into Rust applications without sacrificing performance or ergonomics. We'll use Rust's Foreign Function Interface (FFI) to build low-level bindings to C++ libraries, and show how tools like cxx can streamline the process. We'll then layer on a safe, idiomatic Rust interface that leverages the type system, borrow checker, and traits to create expressive and ergonomic APIs. Along the way, we will look at examples from real-world audio libraries like JUCE, highlighting how to handle common challenges and guide correct usage through the type system.

Attendees will leave with practical techniques for wrapping C++ libraries safely in idiomatic Rust, with a focus on audio applications.

Filed under: Uncategorized

Demystifying std::memory_order

Atomic variables are an important tool for low-latency and real-time audio processing as they are essential to implementing any kind of lock-free algorithm or data structure. In C++, atomic variables are readily available in the Standard Library through std::atomic. However, in order to use std::atomic not only correctly, but also efficiently and performantly, it is crucial to pick the correct memory order for the atomic operation at hand depending on the requirements of the algorithm. This can be accomplished via the std::memory_order parameter that every atomic operation in C++ accepts. Yet memory order in C++ is notoriously hard to reason about and often misunderstood.

In this talk, we give a brief overview over the C++ memory model, why it is needed, and how it maps to what happens in actual hardware. We explain the differences between relaxed, consume, acquire, release, and sequentially consistent memory order, and give practical guidelines for which to use when for working with atomic reads, writes, read-modify-write operations, and memory fences.

Filed under: Uncategorized