Year: 2025

PhilTorch: Accelerating Automatic Differentiation of Digital Filters In PyTorch

Infinite impulse response (IIR) filters are essential building blocks in many audio applications, due to their strong modelling capability with low computational cost. However, this efficiency advantage is not immediately apparent when IIR is incorporated into common non-compiled deep learning frameworks, such as PyTorch, for end-to-end learning. Since PyTorch lacks a low-level automatic differentiation function for recursion, such as IIR, a naive implementation will result in a significant number of function and memory allocation calls, thereby slowing down the process. Tackling this issue is crucial for developing real-time systems that combine neural networks and audio filters.

This talk aims to showcase how PhilTorch, a PyTorch package that facilitates efficient gradient optimisations of filters, implement automatic differentiation for IIR using custom kernels. We will see that automatic differentiations in IIR filters also involve IIR filters. By wrapping IIR filters in custom functions, any low-level filter realisation outside PyTorch can be used to accelerate both filtering and gradient computations. In addition, we will investigate techniques that can significantly accelerate filter computation on GPUs, including diagonalised state-space models and parallel associative scan, and benchmark them against naive implementations.

Filed under: Uncategorized

A History of FLAC

In the 25 years since the first public release of FLAC, it has become a widely supported format for the storage, transmission, and playback of digital audio, but its story has never been told. This talk will trace FLAC's journey from conception to the present. We'll cover the initial motivation for the codec, the design goals and how they shaped the format, and factors that drove its success. We'll also see how online communities, network effects and early adopters like Phish, Metallica and the Beatles accelerated its usage, and take some lessons for how a small open source project can overcome competition from major industry players.

Filed under: Uncategorized

Real-Time Audio in Python: Introducing the asmu Package

Thanks to recent improvements in Python’s interpreter performance, real-time multichannel audio in Python is no longer just a curious experiment - it's a viable option across domains like research, arts, and education - without requiring low-level programming. While Python can’t promise hard real-time guarantees, with right design decisions supported by profiling, you can get surprisingly far.

This talk introduces asmu, a modular Python package designed for real-time audio applications. We'll explore its modular architecture, show real-world use cases - from precise audio measurements to interactive sound sculptures - and share lessons learned on writing efficient Python code. Expect practical insights, optimization tips, and a fresh take on what Python can really do in the audio world.

Filed under: Uncategorized

Analog Filters for Realtime Audio

What makes different analog filters tick? Why does one circuit topology growl and another scream when driven? Is distortion an inherent part of each design, and if so, how can audio programmers incorporate it into their DSP? In this talk, we will demystify analog filters, providing audio developers with a foundational understanding of their behavior, implementation, and potential for creative sound design.

We begin with an introduction to the basic building blocks of filter circuits. These include Passive Components, Operational Amplifiers, and Integrators. Then, we combine them into a full circuit that implements a musical filter.

Next, we show you how to prototype these circuits using interactive simulations. This encourages experimentation, while allowing those without a background in electrical engineering to participate in crafting unique sonic processors.

However, simulations can only go so far when it comes to understanding a circuit. Thus, we will demonstrate how to build the filter you designed in reality. You will be able to measure it, verify that it works and fix any problems that appear along the way.

The next part will focus on more advanced topics, such as Feedback Paths, incorporating Distortion elements (e.g. Transistors) and adding Voltage Control to your filters.

Finally, there will be a realtime audio plugin demo featuring different analog models of classic filter circuits.

Filed under: Uncategorized

Modernizing Legacy Audio Plugin Codebases

Join us for an in-depth look at transforming thirteen legacy audio plugins developed for FL Studio. This talk will take you through the journey of modernizing these plugins for cross-platform compatibility, supporting multiple formats (VST2, FL, AU).

Key topics include:

  • Project Phasing: Backlog triage and consolidation, breaking down the modernization effort into manageable phases. This structured approach enabled efficient prioritization, clear milestones, and incremental delivery of improvements across the plugin suite.
  • Codebase Refactoring: Adoption of C++17, strict compiler settings. Replacement of deprecated APIs with modern system calls. Source code management strategies. MSVC and Xcode project management.
  • Debugging and Logging Strategies: Available Tools, Automated Validation, Logging.
  • Vectorial GUI Modernization: Pitfalls of integrating a new GUI editor with legacy engine.
  • CI/CD and Nightly Builds: Implementation of continuous integration and delivery pipelines, supporting nightly builds and automated testing and installer generation for all platforms.

This talk is designed for audio developers interested in best practices for transforming legacy codebases, modernizing plugins, and leveraging automation and CI/CD in audio software development. Whether you are a student, a new developer, or an industry expert, you will gain practical insights into the challenges and solutions involved in audio plugin modernization.

Filed under: Uncategorized

Implementing Wave Terrain Synthesis

Wave Terrain Synthesis (WTS) is a fascinating and underexplored approach to sound generation. Join me in the curious topic; we’ll explore and demonstrate the core principles of WTS — how the oscillator’s terrain-path interaction shapes timbre and the math concepts behind generating clean, anti-aliased single-cycle waveforms. We’ll also uncover how the path–terrain relationship can produce familiar effects like oscillator sync and phase distortion.

With a large number of controllable parameters, WTS is an inherently expressive synthesis technique. We'll demonstrate how real-time control, LFOs, envelopes, and image-based terrain imports drive expressive and evolving sounds — starting with basic waveform shaping and progressing to rich, multi-layered textures.

Filed under: Uncategorized

Distorted Reality

When trying to understand how distortion and saturation work, we often look to harmonic distortion readings. But did you know that these tell you very little about what's really going on? Let's take a deep dive and learn how harmonics and waveshapers are tied together, and the ways their relationship is commonly misunderstood. We'll get into:

  • Why harmonic distortion is practically inaudible
  • Why odd harmonic energy mostly bolsters fundamental frequencies
  • Why even harmonics can sound so fuzzy
  • Why even and odd harmonics don't describe tube vs. transistor sound
  • The relationship between harmonics and amplitude (peaks)

... and a whole lot more. We'll use basic signal math to dispel some common myths, better understand measurements, and gain conceptual tools to push sound in new directions.

Filed under: Uncategorized

How To Successfully Develop Software Products

The world of software development is overflowing with advice, best practices, frameworks, methodologies, and tools. But after years of building real-world products, many teams come to the same realisation: what’s praised at conferences or preached in blog posts isn’t always the right fit for every project.

In this talk, we’ll explore how to make better decisions by mapping software products along two key dimensions: complexity and maturity. We’ll show how these factors influence everything from architecture to team structure, and why context matters more than dogma.

Some topics we’ll explore:

  • Minimum viable product (MVP) vs prototype: what’s the difference and when should you build which?
  • How (and when) to split the ownership of large projects across multiple teams?
  • How to manage technical debt without being afraid of it?
  • How to bring high market value while maintaining high quality
  • How to communicate effectively with Product, Marketing, and other stakeholders.

All of the above will be illustrated using real-world examples.

Filed under: Uncategorized

Perfect Oscillators in Less Than One Clock Cycle

A sequel, of sorts, to my 2024 talk, "Branch-Free Oscillators for fun and profit".

An implementation of analog-style oscillators in C++ which, by taking maximum advantage of modern processor SIMD architectures, can generate high-quality band-limited waveforms at a cost of less than one clock-cycle per sample on consumer-grade AMD Zen5 CPUs.

The techniques covered are more widely applicable to a range of algorithms and CPUs and include a high-level view of branch-free stream programming and modern SIMD concerns. Intermediate-level C++ and basic knowledge of microprocessor architecture topics are recommended. Basic to intermediate maths/DSP.

Filed under: Uncategorized

Doodads & Doohickeys

Physical modelling is a theory-dense and complex area of plugin design, which tries its utmost to remain faithful to the real-world mechanics of the modelled instrument. But what if that instrument doesn't exist?

This talk aims to explore this concept, prioritising a "this sounds fun" approach, rather than a "this is accurate and actually real maths" approach, in a hand-wavy, conversational and engaging way. Its purpose is less to give practical modelling advice, and more to encourage experimentation, and to celebrate the art of exploring bizarre-fever-dream plugin ideas.

Filed under: Uncategorized