Tag: ADC23

A More Intuitive Approach to Optimising Audio DSP Code – Gustav Andersson – ADC23

https://audio.dev/ -- @audiodevcon​

A More Intuitive Approach to Optimising Audio DSP Code - Guiding the Compiler Through Optimising Your Code for You - Gustav Andersson - ADC 2023

As audio developers we all want our code to be blazingly fast, DSP code in particular. But when reading up on how to optimise audio DSP code, it is easy to get sucked into a world of counting divisions, vector instructions, compiler intrinsics and inline assembly, and think: this is impossible. These are techniques with a very steep learning curve and that require deep technical knowledge of how CPUs and compilers work. The resulting code is also often difficult to read, maintain, and possibly less flexible, as direct inline assembly or intrinsics are often tied to specific cpu architectures.

This talk will present a completely different approach to optimising, one that is more intuitive and accessible, and doesn’t trade speed for readability and maintainability of the code - Simply let your compiler do the hard work for you!

Compilers today are immensely good at optimising code. The difference between an optimised and un-optimised build of the same code can be an order of magnitude, if not more. Still there are things we as programmers can do when we write our code, that affects the level to which the compiler can optimise it.

In this talk we will talk about techniques compilers use to optimise code, and how to write code in a way that enables the compiler to optimise it as efficiently as possible. We will show useful patterns, and anti-patterns, that facilitate or hinder optimisation respectively. We will discuss how to benchmark and measure code and different kinds of bottlenecks, i.e. cpu/memory/pipeline bound code, and how to get the compiler to tell us when it is not able to optimise efficiently.

We will go through a few case studies comparing the performance and generated assembly code, before and after optimisation techniques have been employed. We will also take a look at how using functions from the c++ standard library compares to writing your own functions.

The main focus will be on optimising small, tight loops of audio DSP code that generally run directly from cache. The focus will not be on optimising higher level architecture, memory layout or cache-friendliness.

The talk will come with a companion repository posted on github.
_

Gustav Andersson

Will code C++ and python for fun and profit. Developer, guitar player and electronic music producer with a deep fascination with everything that makes sounds in one form or another. Currently on my mind: modern C++ methods, DSP algos, vintage digital/analog hybrid synths.
_

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 #audio #cpp

Filed under: UncategorizedTagged with: , , ,

Writing Elegant DSP Code in Rust – Chase Kanipe – ADC23

https://audio.dev/ -- @audiodevcon​

Writing Elegant DSP Code in Rust - Chase Kanipe - ADC 2023

Rust has become an exciting alternative to C++ for audio programming. This talk will explain how Rust's unique type system can be leveraged to create elegant DSP code, with an emphasis on conciseness, clarity, and safety.

The talk will show that many features of audio programming DSLs can be achieved using advanced features of the Rust type system, and how Rust's zero-cost abstractions can be used to create DSP elements that are flexible, composable, and don't compromise performance. It will also show how to instantiate and implement audio processing graphs in imperative, functional, and declarative styles.

Link to Slides: https://data.audio.dev/elegant-dsp-with-rust/slides.pdf
_

Chase Kanipe
_

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 #audio

Filed under: UncategorizedTagged with: , , ,

Making It Good (the Principles of Testing Hardware and Software) – Emma Fitzmaurice – ADC23

https://audio.dev/ -- @audiodevcon​

Making It Good (the Principles of Testing Hardware and Software) - Emma Fitzmaurice - ADC 2023

You take a great idea, work out the details, make it and everything is lovely. Except no. Be it hardware or software, seeing an idea through to a high-quality product requires constant vigilance. This session offers a look into the principles and techniques of testing and quality assurance.
_

Emma Fitzmaurice

Emma Fitzmaurice is a QA engineer on the Novation team at Focusrite, sticking her fingers into as many parts as the hardware development pie as possible in an effort to make cool gear. She is charming, beautiful, wise and the proud author of her own bio.
_

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 #softwaretesting #audio

Filed under: UncategorizedTagged with: , , , ,

Reactive Embedded Programming – Tom Waldron – ADC 2023

https://audio.dev/ -- @audiodevcon​

Reactive Embedded Programming - Tom Waldron - ADC 2023

An alternative approach to embedded programming suited to real-time and audio systems whereby the usual background polling is replaced with an entirely reactive structure.

How can we leverage a microcontroller's hardware for predictable scheduling? What would it look like to turn convention on its head and run our entire application in interrupts?

Link to Slides: https://baremetaldev.github.io/reactive-embedded-programming/
_

Tom Waldron
_

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 #cppprogramming #embedded #audio

Filed under: UncategorizedTagged with: , , ,

Real-Time Inference of Neural Networks: A Guide for DSP Engineers – Valentin Ackva & Fares Schulz

https://audio.dev/ -- @audiodevcon​

Real-time Inference of Neural Networks: A Practical Approach for DSP Engineers - Valentin Ackva & Fares Schulz - ADC 2023

In upcoming audio processing innovations the intersection of neural networks and real-time environments is set to play a decisive role. Our recent experience of implementing neural timbre transfer technology in a real-time setting has presented us with diverse challenges. Overcoming them has provided us with significant insights into the practicalities of inferencing neural networks inside an audio plugin.

This talk presents a pragmatic approach: Starting with a trained model, we guide you through the necessary steps for inferencing the model in a real-time environment. On our way we delve into the critical aspect of maintaining real-time safety, share proven strategies to ensure a seamless and uninterrupted signal flow. Moreover, we address the delicate balance between latency, performance, and stability. For this we utilize three different inference engines: libtorch, tensorflow-lite and onnxruntime. While the in-house solutions for the popular machine learning frameworks PyTorch and TensorFlow, seem obvious choices, sometimes other engines may be better suited for certain use cases. By contrasting the characteristics of the engines, we hope to simplify your decision-making process.
_

Valentin Ackva

I am an audio programmer and electronic musician based in Berlin. With a background in computer science, I'm currently working towards my master's degree in Audio Communication and Technology at the Technische Universität Berlin. My passion lies at the intersection of music, programming, and technology, especially where artistry meets innovation. For the last 3 years, I have been working as an audio software developer at a speech processing startup in Leipzig. At my position there, I am responsible for the development of audio effects for speech enhancement. This role includes research into the real-time implementation of state-of-the-art neural networks for tasks such as denoising, audio super-resolution, and dereverberation. This year, I have co-founded a collective that combines the fields of DSP and AI, bringing together a group of audio programmers, machine learning engineers, and artists based in Berlin. In March, we released our first software, "Scyclone", an audio plugin that utilizes neural timbre transfer technology, introducing a new approach to automatic layering. Scyclone's innovative design and interaction of DSP and AI led to it winning the Audio Plugin Competition organised by the Audio Programmer.
_

Fares Schulz

Hello! I am a student assistant at the Electronic Studio of Technische Universität Berlin, currently pursuing a master's degree in Audio Communication and Technology. My educational background includes two bachelor's degrees in physics and audio engineering. During this time, my passion for audio software gradually led me from theoretical mathematical equations and abstract artistic concepts to their development as DSP algorithms in Python and their implementation as real-time audio applications in C++. Currently, I am particularly interested in exploring novel applications of neural networks for digital signal processing. Together with like-minded people, I recently developed the open source project Scyclone, which won the Neural Audio Plugin Competition organized by Audio Programmer. In addition to my academic and open source endeavors, I am actively involved in the development of noise reduction algorithms in Python and C++ for medical devices at Miethke.
_

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 #audio

Filed under: UncategorizedTagged with: , , ,

Build a High Performance Audio App With a Web GUI & C++ Audio Engine – Colin Sullivan & Kevin Dixon

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

Filed under: UncategorizedTagged with: , , , , , ,

Embedded Software Development – A Wild Ride! – Matt Speed & Andy Normington – ADC23

https://audio.dev/ -- @audiodevcon​

Embedded Software Development - A Wild Ride! - Matt Speed & Andy Normington - ADC 2023

Embedded software development (aka firmware) can be challenging, but it's incredibly rewarding. Sitting at the beating heart of all audio hardware products, it handles the UI, connects the physical and virtual, and transforms signals and sounds to bring the product to life.

Join us to hear about how it connects with the electronics, software development and QA worlds, and the fun you can have bringing hardware products to life!!

Link to Slides: https://data.audio.dev/talks/2023/embedded-wild-ride/slides.pdf
_

Matt Speed

Matt has worked at Novation for 8 years, helping to develop a range of synths and controllers. He loves DSP, mathematics and music, and has an unhealthy(?) passion for the 56k.

Andy Normington

I work with embedded software on new Focusrite and Novation products. Coming from a background in music and audio and having started my career more focused on electronics, I enjoy learning about the way the systems we develop work in the real world - it's always a little different to what I expect! I'm always on the lookout for ways to do things a little better than last time, which at work drives my interest in teams and tooling (and at home drives my ever-increasing stash of DIY tools and gadgets). I'm at ADC for the first time in 2023, and really looking forward to learning lots and meeting people.
_

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 #embeddedsoftware #audio

Filed under: UncategorizedTagged with: , , , , ,