Tag: c++

Exploration of Strongly-Typed Units: A Case-Study From Digital Audio – Roth Michaels – ADC23

Join Us For ADC24 - Bristol - 11-13 November 2024
More Info: https://audio.dev/
@audiodevcon​

Exploration of Strongly-Typed Units: A Case-Study From Digital Audio - Roth Michaels - ADC 2023

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! 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 because the standard does not offer any tools for user-defined units.

In this talk, we will look at the mp-units library which has been proposed for standardization in P1935 (A C++ Approach to Physical Units). We will look at the implementation of various units used in digital audio / DSP that go beyond “physical” units and what the experience is like to develop your own units with this library/proposal.
To close, we will look at things missing from P1935 that we as audio developers might need.
_

Roth Michaels

Roth Michaels is a Principal Software Engineer at Native Instruments, an industry leader in real-time audio software for music production and broadcast/film post-production. In his current role he is involved with software architecture and bringing together three merged engineering organizations and legacy codebases: Brainworx, iZotope, and Native Instruments. He also supports the Audio Research team to help accelerate moving research to productization and developing fast prototyping tools for product teams. Before merging with Native Instruments, when he joined iZotope, Roth was the lead library designer of a new internal cross-platform "Glass", part of which is now available as open-source. More recently in his former role as Mix/Master Software Architect, Roth helped develop the reference implementation to move iZotope's products to subscription and led 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. Roth began his career in software development writing software for his own compositions, and the works of other composers and artists, and teaching MaxMSP to composers and musicians; both private instruction and designing university courses. Before joining iZotope, he was working as a consultant for small startups working on mobile applications specializing in location services and Bluetooth.
_

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

Filed under: UncategorizedTagged with: , , , ,

Three RADical Concepts in the Art of C++ Coding – Chris Nash – ADC23

Join Us For ADC24 - Bristol - 11-13 November 2024
More Info: https://audio.dev/
@audiodevcon​

Three RADical Concepts in the Art of C++ Coding - Chris Nash - ADC 2023

What if MIDI was a programming language?
What if C++ had built-in audio semantics?
What if you could develop C++ plugins, live in the DAW?

This talk explores these ideas and the development of new technologies designed to blur the lines between music and code, for both artists and developers, and challenge traditional ways of thinking and working.

Drawing on concepts of flow, liveness, and rapid prototyping, the talk will present live demos, and discuss the development of:

Manhattan - a digital audio workstation and embeddable API built on a procedural music engine that integrates sequencing and programming. Used by artists, game composers, and in teaching computational thinking, example applications include crowd-driven music using machine vision, a Unity mini-game featuring a live (and somewhat mortal) orchestra, plus a growing library of famous works recomposed as code that shows the power of modelling music as both pattern and process.

Klang - an open C++ dialect (language extension) for audio, using modern language features (C++14/17) to extend the semantics of C++ to encapsulate audio, providing DSP primitives and types, and adapting the STL's concept of stream objects and operators to represent signals. Easier to read, more concise, and easily mapped to visual forms (block diagrams, Max), Klang feels like a new language (in the spirit of SOUL) but, as pure C++, retains the performance, portability, compatibility, and interoperability of the industry standard.

rapIDE - a C++ IDE inside a DAW plugin, designed for rapid audio prototyping and development of synthesisers and effects. Built on a full clang/LLVM-based toolchain, the plugin's source code can be live edited, rebuilt, reloaded and auditioned without restarting the DAW (or stopping playback). Compatible with C++ and Klang, rapIDE is designed to improve the accessibility, liveness, and immersion of audio programming, for applications in rapid prototyping and teaching, featuring realtime debugging, auto-complete, code sandboxing, and built-in audio analysis.

These technologies will support the new Music Systems Engineering (MuSE) degree programme, in development by Point Blank Music School in collaboration with industry, for launch in 2024.
_

Chris Nash

Chris Nash is a software developer, composer, educator and researcher in things that go beep in the night. Following a PhD on music software design at Cambridge, he has worked on technology and music projects across academia and industry, including for the BBC, Steinberg/Yamaha, and multiple start-ups, and independently develops and maintains several software projects, specialising in computer music and making music programming more accessible, including Manhattan (a hybrid DAW/programming language), Klang (a C++ dialect for audio), rapIDE (a plug-in based C++ IDE) and reViSiT (an award-winning plug-in based sound tracker). He is currently Senior Lecturer in Software Development for Audio, Sound, and Music at UWE Bristol, and recently founded nash.audio, a non-profit organisation supporting creativity and learning in music technology. Working with London-based Point Blank Music School, Dr Nash is the architect of the forthcoming MuSE (Music Systems Engineering) course, developed in collaboration with industry to be the world's first audio developer degree programme.
_

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

Filed under: UncategorizedTagged with: , , , ,

Building an Accessible Juce App – Harry Morley – ADC23

Join Us For ADC24 - Bristol - 11-13 November 2024
More Info: https://audio.dev/
@audiodevcon​

Building an accessible JUCE app - Harry Morley - ADC 2023

During this talk we will investigate what goes into making a JUCE app accessible. We'll go over component grouping and hierarchies, keyboard focus, tips for testing accessibility and more, using real-world case studies and concrete examples.

The session will primarily be about screen reader accessibility, since you may be new to using the parts of JUCE that deal with accessibility.

The talk is designed for people who may not know where to begin when building an accessible app with JUCE, or simply for those who would like to hear some perspectives regarding creating accessible audio apps.
_

Harry Morley

Harry has been a software developer at Focusrite for 4 years. He mainly works on C++ software that interacts with audio hardware, such as the Vocaster and Scarlett interfaces. Harry loves talking all things music, creativity and accessibility. Before Focusrite, Harry studied MA Computational Arts at Goldsmiths, and BMus Creative Music Technology at Surrey. He is a multi-instrumentalist who plays in a variety of genres and bands.
_

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

Filed under: UncategorizedTagged with: , , , ,

Why You Shouldn’t Write a DAW – David Rowland – ADC23

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

Why you shouldn’t write a DAW - David Rowland - ADC 2023

There are surprisingly few DAWs in the music making world, especially when compared to the number of audio plugins on the market. Why is this? Could it be that all the DAWs in existence are perfect and there’s no need for another one? Perhaps there’s another reason…

In this talk we dive behind the UI/UX to take a deeper look at the technology that underpins DAWs. We’ll take a tour of some of the problems they solve, often transparently to the user, and some of the technical concepts they have to navigate in order to keep music makers in the groove.

Finally, we look at what alternatives there might be if you want to build a product that looks a bit like a DAW and why not building from scratch might save you a lot of time and money.

Link to Slides:
_

David Rowland

Dave Rowland is the CTO at Audio Squadron (owning brands such as Tracktion and Prism Sound), working primarily on the digital audio workstation, Waveform and the engine it runs on. Other projects over the years have included audio plugins and iOS audio applications utilising JUCE. In academia, David has taught on several modules at the University of the West of England on programming for audio. David has a passion for modern C++ standards and their use to improve code safety and brevity, has spoken at the Meeting C++ and Cpp On Sea conferences and is a regular speaker at the Audio Developer Conference and related monthly meetup. Past presentations: https://github.com/drowaudio/presentations/
_

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

Filed under: UncategorizedTagged with: , , , ,

Fast Audio Thread Synchronization for GPU Data – Evan Mezeske – ADC23

Join Us For ADC24 - Bristol - 11-13 November 2024
More Info: https://audio.dev/
@audiodevcon​

Fast Audio Thread Synchronization for GPU Data - Evan Mezeske - ADC 2023

While building my GPU-based physics simulation instrument Anukari (https://www.youtube.com/watch?v=nUO6iMcbao4), I had to solve a number of significant challenges, and I'll explain my solutions in this talk. The talk is not about Anukari per se; rather it's about some of the interesting solutions I developed as part of building it.

One challenge had to do with synchronizing the Anukari's data model from the GUI thread to the audio thread. Anukari models arbitrary networks of masses and springs, and can simulate close to a thousand masses and many thousands of springs. This data model is thus rather large, and it was nontrivial to provide model updates from the GUI to the audio thread. I designed a reliable wait-free approach that works without mutexes, without memory allocation, has support for transactions, and with minimal data transfer between threads. I will discuss a few technologies that I used together, including wait-free SPSC queues, the difference between wait-free and lock-free algorithms, reasons for avoiding mutexes and memory allocations, and custom data structures for avoiding memory allocations.

Another challenge was in regards to running GPU physics simulations at audio sample rates (48kHz). Memory bandwidth was a major issue, as well as kernel execution latency and cross-GPU-thread synchronization. I will discuss the OpenCL language and its limitations, the approaches I used to deal with OpenCL kernel execution latency, and the on-GPU thread synchronization, and memory optimizations..

And, of course, I will show how all of this ties together into a reliable system for synchronizing the GUI and audio threads with no waits, despite a large data model and compute-intensive physics simulation.

Prerequisite(s): Familiarity with C++ programming Familiarity with thread synchronization primitives like mutexes.
_

Evan Mezeske

Evan Mezeske is a software engineer and amateur musician based out of Arizona, USA. He spent the last 10 years working as a senior engineering leader on large-scale distributed systems at Google before defecting in early 2023 to found his music software company, Anukari Music. Anukari's upcoming eponymous flagship product will allow users to construct 3D arbitrary models of springs and masses and to manipulate them in real time to produce music, sound effects, and audio filters (https://www.youtube.com/@anukarimusic). Primarily a jazz guitarist, Evan also plays keyboards, produces electronic music, and enjoys learning obscure musical instruments (such as the two-chamber Peruvian Ocarina). Anyone interested in learning more about Anukari is encouraged to join Anukari's Discord server! https://discord.gg/ywwYfhGbDp
_

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

Filed under: UncategorizedTagged with: , , , ,

The Architecture of Digital Audio Workstations (& Other Time-Based Media Software) – Ilias Bergström

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

The Architecture of Digital Audio Workstations (and Other Time-Based Media Software) - Ilias Bergström - ADC23

The ADC community has produced a wonderful wealth of material on audio software development!

But there is a relative dearth on the big picture of how all these coding techniques, practices, strategies, and design patterns, can interrelate, giving rise to the complex beast that is a modern Digital Audio Workstation (DAW).

While there are some open-source DAWs to study, there is little material on their architecture, apart from the source code itself - with the main exception being the (GUI-less) Tracktion engine of course.

Although implicit / emergent architecture may be sufficient for small to medium size codebases, a large codebase such as a DAW demands deliberate attention to design.

We present the low-level design patterns for the DAW engine and presentation layers, the UI/UX design patterns these interrelate to, and the architectural design patterns for the complete system. Crucially, the main emphasis of our talk is not the details of the above, but how they all together define a modern DAW.

We then present the challenges faced in defining such an architecture to satisfy the specific Attributes of a DAW - e.g. a non-destructively alterable model, and the real-time constraints that necessitate lock-free communication between threads. We discuss the compromises needed to satisfy such conflicting needs, and some future challenges presented, as the software category evolves into the future, e.g. with MIDI 2.0 around the corner.

While we concentrate on DAWs, much of this discussion also generalises to the broader category of Time-Based Media software.

The presentation is grounded in two DAW-like applications we have developed: one is a desktop application with a GUI, and the other is a "headless" embedded DAW, with a separately executed GUI application. They are both very different, each lacking central features that the other has. But together, and even more so through their differences, they serve as great illustrations of the concepts we present.

This subject area is vast, and a review of every topic and technique is impossible in the scope of a single talk. We give a good introductory overview, hopefully laying a foundation for further learning and knowledge dissemination in the community.

Link to Slides: https://data.audio.dev/talks/2023/the-architecture-of-daws/slides.pdf
_

Ilias Bergström

Senior Software Engineer, ElkComputer Scientist, Researcher, Interaction Designer, Musician, with a love for all music but specially live performance. I've worked on developing several applications for live music, audiovisual performance, and use by experts, mainly using C++. I get very excited whenever anybody mentions "control data" in my vicinity!
_

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

Filed under: UncategorizedTagged with: , , , ,

Building a Music Assessment Engine: Requirements, Challenges, and Solutions – Martin Gasser – ADC23

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

Building a Music Assessment Engine: Requirements, Challenges, and Solutions - Martin Gasser - ADC23

Automatic music assessment systems have become an integral part of music (self-)education in recent years, with systems like Yousician, Smart Music, and MuseClass gaining widespread attention. In this talk, Martin Gasser will share an overview of the requirements of a music assessment system — both from a musical and a technical point of view. Technical limitations in low-resource environments like smartphones will be discussed. Solution approaches will also be described, and Martin will briefly demonstrate the performance of Muse Group's new music assessment system on real-life data.
_

Martin Gasser

Martin Gasser is a Senior Developer at Muse Group. Formerly a leading researcher in the field of Machine Learning & Music at the Austrian Research Institute for Artificial Intelligence, Martin has years of expertise in AI, musical software development, hacking C++, and more. Full bio: https://martingasser.com/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 #ai #audio

Filed under: UncategorizedTagged with: , , ,

Music Hack Day India Winner Presentations – ADCx India 2024

Join Us For ADC24 - Bristol - 11-13 November 2024
More Info: https://audio.dev/
@audiodevcon​

Music Hack Day India Winner Presentations - - ADC 2023

Music Hack Day India is a gathering of researchers, developers, creative coders, musicians, makers, engineers, audiophiles and more. It was hosted on 5th & 6th Jan 2024, preceding ADCx India and included many interesting hacks from the participants.

The winners of the hackathon were invited to present their idea on the ADCx India platform.

Inspira - A Tool for Musical Inspiration

Chordeezy - Complex chord generation made simple

Fly by Ear - An Audio Game Accessible to People with Visual Impairments

Link to Slides:

https://data.audio.dev/talks/ADCxIndia/2024/music-hack-day-india-inspira.pdf
https://data.audio.dev/talks/ADCxIndia/2024/music-hack-day-india-chordeezy.pdf
https://data.audio.dev/talks/ADCxIndia/2024/music-hack-day-india-fly-by-ear.pdf
_

Edited by Digital Medium Ltd - online.digital-medium.co.uk
_

Organized and produced by JUCE: https://juce.com/
_

Special thanks to the ADC24 Team:

Sophie Carus
Derek Heimlich
Andrew Kirk
Bobby Lombardi
Tom Poole
Ralph Richbourg
Prashant Mishra

#adc #dsp #audio #audiotech #audiotechnology

Filed under: UncategorizedTagged with: , , ,

Vars, Values and ValueTrees: State Management in JUCE – Jelle Bakker – ADC23

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

Vars, Values and ValueTrees: State Management in JUCE - Jelle Bakker - ADC 2023

Managing various types of state, including global settings, presets, UI state, and application state, is crucial for building robust software. But, it comes with a challenge. State must be synchronized throughout the app. State must be stored and restored. And state is everywhere. There seems to be a lot of debate about what the best way is to solve these problems. The concept of centering your app around a model, a single point of truth, has long been recognized as a powerful pattern, often referred to in the context of MVC (Model-View-Controller). Adopting this approach will make extending and maintaining your software simpler. In JUCE you will find many classes designed for dealing with state, such as the AudioProcessorValueTreeState, ApplicationProperties, Value and Vars. This talk will serve as a guide and overview for how to manage data in JUCE applications.

Link to Slides: https://data.audio.dev/talks/2023/vars-values-and-value-trees/slides.pdf
_

Jelle Bakker

Jelle Bakker is a JUCE developer, building audio-plugins and desktop applications. Jelle has worked as a contract software engineer for different companies across the globe. He specializes in software design and architecture. Besides that, Jelle is a father, coffee lover, and music performer, playing piano, electric guitar and cello.
_

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

Filed under: UncategorizedTagged with: , , , ,

How to Write Bug-Free, Real-Time Audio C++ Code? – Jan Wilczek – ADC23

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

How to Write Bug-Free, Real-Time Audio C++ Code? - Jan Wilczek - ADC 2023

How many times have we compiled our audio plugin or app and launched it only to find out that "something is glitching"?

How can we be sure that we submit a correctly implemented audio feature in a pull request?

And how can we detect existing problems and precisely locate them in our codebase?

I've been pursuing the answers to these questions from my day 1 in the audio industry and in this talk I am going to share with you my personal favorites. This is not just from my experience; I've actively asked community members for their strategies at every opportunity I got. This is a collected wisdom of more than just a single developer.

In the talk, I will:
1. Outline why shipping bug-free code is vital for your business and your own sanity
2. show you simple yet profound strategies for ensuring software correctness based on digital signal processing (DSP), including:
1. taking advantage of phase cancellation properties
2. leveraging the power of the FFT for frequency-manipulation algorithms,
3. underused DSP tools like total harmonic distortion (THD), Farina sweep, and pole-zero plot,
4. discovering the power of reference audio renders.
3. explain how to safely reuse stable and tested DSP code of other developers,
4. interoperate C++ and Python for accessing powerful numerical libraries and testing complicated scenarios
5. correctly implement even the most advanced DSP algorithms and optimizations,
6. show real-world examples where these principles helped solve hidden audio bugs, including
1. pitch tracking,
2. pitch shifting, and
3. the flanger effect.
With this knowledge you'll be able to:
1. approach developing new features with greater confidence,
2. enjoy more inner peace during development, review, and deployment,
3.write correct audio code every time!
_

Jan Wilczek

Jan Wilczek graduated with honors from Friedrich-Alexander-Universität Erlangen-Nürnberg, having completed a master’s program Advanced Signal Processing and Communications Engineering. He is an Audio Developer of Music Maker JAM at Loudly GmbH in Berlin; an app to make loop-based music that runs on Android, iOS, and Windows.Additionally, he has created TheWolfSound.com to help students and software engineers learn audio programming for getting game audio, audio plugin, or mobile audio developer jobs. He is the author of DSP Pro: an online course on the basics of digital audio signal processing for aspiring audio programmers. He helps others through online courses, one-on-one coaching and publishing tutorials and explainer videos about various aspects of audio programming. Parallel to the educational services, he is a consultant in the field of audio programming. He is also a researcher in the area of Virtual Analog modeling using deep learning; his latest work was presented at the Digital Audio FX 2022 conference in Vienna. His professional goal is to lower the entry barrier for everyone interested in writing audio software. He pursues it by publishing high-quality articles, videos, and podcasts or giving talks.
_

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: , , ,