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.
Roth Michaels
Director of Software Research
inMusic
Roth Michaels is Director of Software Research at inMusic, the family of music technology and consumer electronics brands behind Akai Professional, Moog Music, M-Audio, Denon DJ, and Native Instruments, among others. He stepped into this role following inMusic's 2026 acquisition of Native Instruments, taking on responsibility for the AI/ML research team, leading adoption and training of internal AI tools across the organization, and coordinating software engineering topics that cross brand lines.
Before the acquisition, Roth was a Principal Software Engineer at Native Instruments, where he worked on software architecture to bring together the company's merged engineering organizations and legacy codebases — spanning Native Instruments, iZotope, and Brainworx during the years those brands operated under one roof. He also supported the Audio Research team, helping accelerate the path from research to productization and building fast prototyping tools for product teams. Earlier, as the lead library designer at iZotope, Roth built a new internal cross-platform library, "Glass," part of which is now available as open source. In his prior role as Mix/Master Software Architect, he led development of the reference implementation that moved iZotope's products to subscription and headed the team that launched the company's first SaaS offering for music producers.
Roth studied music composition at Brandeis University and continued his studies in the Dartmouth Digital Musics program. He began his career writing software for his own compositions and for the works of other composers and artists, and teaching MaxMSP to composers and musicians through both private instruction and university course design. Before joining iZotope, he worked as a consultant for small startups building mobile applications specializing in location services and Bluetooth.