https://audio.dev/ -- @audiodevcon
Building a High Performance Audio Application With a Web GUI and C++ Audio Engine - Colin Sullivan & Kevin Dixon - ADC23
The era of using web UIs for audio applications is just beginning. How might we build a high performance audio application on the foundations of the JUCE web component ? How might we overcome some limitations of the JUCE web component, such as passing chunks of binary data to the GUI? How might we deal with the complexities of this dual-sided system written in two different languages? We have developed a solution for a high-performance application architecture including a C++ audio engine and a web GUI.
Both the C++ audio engine and web UI implement their own unidirectional data flow, and combine to form an application wide unidirectional data flow, allowing the GUI to send actions into the C++ application to initiate state changes. We will discuss tooling developed for sharing data types between the two languages without error-prone manual maintenance, as well as the communication protocol itself and how we overcame limitations by intercepting HTTP requests from the webview in the C++ application.
We will discuss the performance considerations of integrating the unidirectional data flow architecture with a real-time audio engine and the high-performance architecture of the Web GUI itself.
Link to Slides: https://data.audio.dev/building-a-physical-experience-for-virtual-instruments/slides.pdf
_
Colin Sullivan
Colin Sullivan is a software developer building interactive systems with web technologies and C++. Colin has operated as a software engineer across product lifecycles from incubation & product prototyping to product release in multinational companies and startups. Colin has built interactive installations and performed improvisational electronic music using bespoke generative music software.
_
Kevin Dixon
I've been building consumer and professional music applications for both desktop and mobile platforms since 2008. Originally started work on a streaming video platform for public safety, I was immediately exposed to the issues of communicating between a high-performance C++ engine and with a garbage collected language (C#) for the GUI. After cutting my teeth on mobile development with the first Android G1 handset, I moved squarely into the audio industry. At Audyssey Labs, I was a founding member of their mobile team, and was responsible for integrating DSP technology into any OS or Firmware our client demanded, most notably the Android OS itself. I was a lead developer on a consumer hifi listening app for iOS and was awarded a patent (US9860641B2) for delivering audio output device specific audio processing from the cloud. From there, my mobile experience led me to Native Instruments, where I contributed heavily to both of Native Instruments mobile offerings, iMaschine and Traktor DJ, always with a focus on the audio engine and application architecture. Spending time in a product-focused environment taught me to be efficient with what makes it into the codebase, while still balancing overall quality (decisions in codebases always last longer than you think!). After brief, yet productive, stints with Fender and Dolby, I landed at Output and have been focusing on audio engine and application architecture for the past two years.
_
Streamed & Edited by Digital Medium Ltd: https://online.digital-medium.co.uk
_
Organized and produced by JUCE: https://juce.com/
_
Special thanks to the ADC23 Team:
Sophie Carus
Derek Heimlich
Andrew Kirk
Bobby Lombardi
Tom Poole
Ralph Richbourg
Jim Roper
Jonathan Roper
Prashant Mishra
#adc #audiodev #dsp #cppprogramming