We spoke to Dr Andrew McPherson about his new series of free YouTube lectures: C++ Real-Time Audio Programming with Bela.
I am a Reader in Digital Media and a member of the Centre for Digital Music. I have a PhD in music composition from the University of Pennsylvania and an MEng in electrical engineering from MIT.
I have been at Queen Mary since 2011. Within C4DM, I lead the Augmented Instruments Laboratory, a research team focused on music and human-computer interaction, especially the design and evaluation of new musical instrument technologies.
The series is a set of free YouTube lectures introducing audio programming in C++, which is the language most commonly used for real-time audio plugins and embedded hardware systems. The tutorials are based on Bela, which is a product of my research which in 2016, following a successful Kickstarter campaign, spun out into a company. Bela is an open-source hardware and software platform for creating high-performance audio systems with extremely low latency (delay). The Bela core team consists of several C4DM PhD alums.
The basic idea with the lecture series is to use the popularity of modular synths and audio effects to introduce C++ programming. Each lecture has at least one technical topic tied to one or more music or audio topics. The lectures come with free companion materials: code examples, slides and links to further resources. I expect there will be at least 20 lectures by the time the series is finished.
I have taught similar material for the past few years in the Real-Time DSP module (now called Music and Audio Programming), and I wanted to share it with a wider audience. C++ programming can seem unapproachable to people just learning to write code, and I am hoping we can lower the barrier to entry.
The lectures also have benefits for Bela by raising the profile of the platform, and for by promoting its degree programmes including the MSc in Sound and Music Computing and the PhD in Artificial Intelligence and Music.
By the end of the series, participants will have made a complete working synth from first principles, plus some audio effects and other useful projects. The lectures are intended to be watched in order, but it's also possible to jump around to learn particular topics.
My hope is that people can use these lectures as a launchpad for their own creative ideas, gaining confidence in C++ and reworking the example materials to suit their needs.