Back To Schedule
Tuesday, November 16 • 23:10 - Wednesday, November 17 •00:00
(Replay) C++ Expression Templates for Specifying Compile-time DSP Structures

Log in to save this to your schedule, view media, leave feedback and see who's attending!

Please note that the recordings on Zoom are Dual Mono and not Stereo - some pre-recorded sessions have been uploaded to YouTube to preserve the independent dual channel audio, but some sessions may still be affected.

We explore the use of expression templates for the zero-overhead composition of small units of DSP.

Our primary aim is to approach the low-friction, fine-granularity expressiveness of DSL systems like FAUST, while staying fully within the confines of C++ and allowing the full use of its type system. With this, the final graph construct is a simple C++ class, which can be instantiated and exercised without any scaffolding or external tooling. The conceptual machinery can be uniform, where tunable algorithm parameters quickly reduce to ordinary graph data and are processed themselves in one flat graph space.

The idea naturally extends to the processing of arbitrary data types through the graph - such as abstract control types, and types supporting block-based and frequency-domain processing. Further, it is trivial to embed the resulting classes into plugins via template adapters. Finally, the expression-template paradigm enables global optimization of the result.

When using such a system, development can be a very low-friction process, granularity can be fine, and the exact same user code can be embedded into both real-time and offline contexts without special affordances.


avatar for Matthew Robbetts

Matthew Robbetts

Matthew is a C++-focused audio developer with a passion for bringing highly expressive, functional-programming approaches to real-time systems.He previously worked for Apple, where he was responsible for audio/telephony DSP algorithm development; and currently works for Syng, on their... Read More →

Tuesday November 16, 2021 23:10 - Wednesday November 17, 2021 00:00 GMT
Online 2
  Online Only
  • Level Intermediate, Advanced