Tag: JUCE

Guide to C++ ValueTrees – The Secret Weapon of JUCE – Brett g Porter – ADC 2024

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

Guide to C++ ValueTrees - The Secret Weapon of JUCE - Brett g Porter - ADC 2024
---

The JUCE website says "The ValueTree class is JUCE's secret weapon," and it's true. They give you:

- A really easy way to capture and pass around the entire state of your application's data at run time
- A rich mechanism to watch that data at a fine degree of granularity
- Trivially easy persistence of application state

...but at the cost (in comparison to using native POD or class/struct variables) of being:

- slower
- less convenient to use
- less type-safe, since all values are stored in the JUCE var variant type.

This talk will explore the new Cello library to abstract away the underlying API calls in favor of syntax that's more like working with POD data. The original goal was to be able to write code something like the below, but using ValueTrees as the backing data store:

struct MyStruct : public cello::Object
{
cello::Value<int> x;
cello::Value<float> y;
};

MyStruct demo;

// will be executed any time the value of X changes
demo.x.onPropertyChange = [&demo] ()
{
std::cout << "x changed to " <<demo.x << "n";
}

// after executing this line, stdout should print: "x changed to 100"
demo.x = 100;
...and it's surprising how close to that we were able to get.

This project has a set of overlapping goals:

- make working with ValueTrees more like working with C++ objects and less like calling API functions
- add type-safety and type conversions without explicit use of VariantConverter objects
- reduce boilerplate wherever possible
- handle undo/redo management invisibly
- support validation of values when they are accessed
- explore the gray area between compile-time strong typing as in C++ and the kind of runtime dynamic typing that's possible using the ValueTree API
- explore the available methods of reactive programming enabled with this system
- build out new functionality that's implied by the capabilities of ValueTrees but perhaps not obvious, like:
- creating a kind of NoSQL database
- creating an in-process sync mechanism to make ValueTrees thread-safe
- creating a simple IPC implementation
- In general, add support for more complex use cases where the complexity can be hidden inside the framework.
---

Slides: https://data.audio.dev/talks/2024/beyond-valuetrees/slides.pptx
---

Brett g Porter

Brett g Porter is a composer, trombonist, and developer of music software, currently Lead Software Engineer at Artiphon, where he designs strange little electronic musical instruments. He is a frequent speaker on the topic of Music Technology at industry events including SXSW, the Audio Developers Conference, the NAMM Show, and the Audio Engineering Society convention. He also serves on the executive board of the MIDI Manufacturers Association, which defines and maintains the MIDI standards used by electronic instruments, and has been active in several of the working groups tasked with developing the MIDI 2.0 specifications. Brett holds degrees in composition and electronic music from the Frost School of Music at the University of Miami.
---

ADC is an annual event celebrating all audio development technologies, from music applications and game audio to audio processing and embedded systems. ADC’s mission is to help attendees acquire and develop new audio development skills, and build a network that will support their audio developer career.
Annual ADC Conference - https://audio.dev/
https://www.linkedin.com/company/audiodevcon

https://facebook.com/audiodevcon
https://instagram.com/audiodevcon
https://www.reddit.com/r/audiodevcon/
https://mastodon.social/@audiodevcon
---

Streamed & Edited by Digital Medium Ltd: https://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
Jim Roper
Jonathan Roper
Prashant Mishra

#cpp #adc #juce #audiodev #dsp #audio #conferenceaudio #audioprocessing #audioproduction #audioprogramming #musictech #soundtech #audiotech #audiotechnology

Filed under: UncategorizedTagged with: , , , ,

Squeeze C++ JUCE and Bottle It Into Linux Embedded Devices and More – Stefano Zambon – ADC 2024

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

Squeeze C++ JUCE and Bottle It Into Linux Embedded Devices and More - Stefano Zambon - ADC 2024
---

Running JUCE applications on embedded Linux devices is not a new thing. The topic has been treated in previous ADCs and, most notably, at ADC 2016 Felipe Tonello introduced a repository for Yocto/OpenEmbedded to make the task easier.

However, several things have changed in the meantime both in JUCE and in the embedded Linux world. This talk will present a new integration between CMake-based JUCE projects and Yocto/Openembedded, targeting modern embedded Linux platforms using the Raspberry Pi as an example.

The focus will be on the entire embedded development workflow, showing how to build target filesystem that can be run on the devices, cross-compiling SDKs, and automated testing tools suitable for modern CI/CD integration.
---

Slides: https://data.audio.dev/talks/2024/squeeze-juce-and-bottle-it-into-embedded-devices/slides.pdf
---

Stefano Zambon

CTO at Elk, wearing multiple hats (embedded developer, DSP programmer, technical manager)
---

ADC is an annual event celebrating all audio development technologies, from music applications and game audio to audio processing and embedded systems. ADC’s mission is to help attendees acquire and develop new audio development skills, and build a network that will support their audio developer career.
Annual ADC Conference - https://audio.dev/
https://www.linkedin.com/company/audiodevcon

https://facebook.com/audiodevcon
https://instagram.com/audiodevcon
https://www.reddit.com/r/audiodevcon/
https://mastodon.social/@audiodevcon
---

Streamed & Edited by Digital Medium Ltd: https://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
Jim Roper
Jonathan Roper
Prashant Mishra

#juce #embedded #cpp #adc #audiodev #dsp #audio #audioprocessing #audioproduction #audioprogramming #musictech #soundtech #audiotech #audiotechnology

Filed under: UncategorizedTagged with: , , , ,

JUCE and Direct2D – Matt Gonzalez – ADC 2024

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

JUCE and Direct2D - Matt Gonzalez - ADC 2024
---

This talk will cover the new JUCE 8 Direct2D renderer. We'll discuss the history of JUCE rendering, dig into the black box of what Direct2D is and actually does, explore what the new renderer can do, and cover practical tips for writing high-performance graphics code with JUCE 8.
---

Slides: https://data.audio.dev/talks/2024/juce-direct2d/slides.pptx
---

Matt Gonzalez

I've been writing software since my dad bought me a Texas Instruments 99/4A when I was twelve. I taught myself assembly language and BASIC and haven't really stopped since!

I've been a JUCE enthusiast for about as long as JUCE has existed and have been a JUCE forum member since 2005.

I've worked for Echo Digital Audio since 1993. I've worked on a diverse array of hardware and software projects for pro audio, broadcast, and test and measurement both for Echo and for consulting clients, including guitar effects, music synthesis, acoustic measurement, audio plugins, loudness measurement, embedded DSP code, audio firmware, real-time networking, time synchronization,Windows audio device drivers, Windows networking drivers, macOS audio device drivers, and a bunch of other projects I've probably forgotten about.

Recently I worked with the JUCE team to add Direct2D rendering to JUCE 8.
---

ADC is an annual event celebrating all audio development technologies, from music applications and game audio to audio processing and embedded systems. ADC’s mission is to help attendees acquire and develop new audio development skills, and build a network that will support their audio developer career.
Annual ADC Conference - https://audio.dev/
https://www.linkedin.com/company/audiodevcon
https://twitter.com/audiodevcon
https://facebook.com/audiodevcon
https://instagram.com/audiodevcon
https://www.reddit.com/r/audiodevcon/
https://mastodon.social/@audiodevcon
---

Streamed & Edited by Digital Medium Ltd: https://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
Jim Roper
Jonathan Roper
Prashant Mishra

#juce #adc #audiodev #dsp #audio #conferenceaudio #audioprocessing #audioproduction #audioprogramming #sound #musictech #soundtech #audiotech #audiotechnology

Filed under: UncategorizedTagged with: , , ,

Writing Correct C++ GUI Code: Bug-Free JUCE UI – Jan Wilczek – ADC 2024

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

Writing Correct C++ GUI Code: Bug-Free JUCE UI - Jan Wilczek - ADC 2024
---

Do you want to:

- Build large-scale and small-scale applications with graphical user interfaces for clients?
- Confidently design your app’s UI architecture using a structured approach?
- Ensure your app is bug-free also in the UI code without laborous manual testing?

How many times have you opened your JUCE GUI app only to find something isn’t working?

How many times have you ended up with too much logic in your Component classes?

And how many times were you scared to start a new project because of the perceived size of the app and lack of confidence in how to design it or start coding?

Graphical user interfaces often suffer from testability problems and thus require a lot of manual testing. How can we overcome this issue? One approach is automated testing with sophisticated GUI analysis tools. However, an easier solution has largely been ignored by JUCE developers: the Model-View-ViewModel (MVVM) pattern, which has been successful in frameworks like Windows Presentation Foundation (WPF) and Android development.

What will you learn from this talk?
- The differences between modern GUI architectures (MVC, MVP, MVVM).
- How to design your GUI app architecture for scalability and maintainability.
- How to reduce development time, costs, and stress by leveraging the power of the MVVM pattern in JUCE apps for clean and testable GUIs.
- How to effortlessly test your GUIs in an automated way without even launching your app.
- How to handle multithreading issues when interacting with GUI code.

Who is this talk for?
- Mostly mid and senior JUCE developers.
- Junior developers can benefit from learning about the scope of the problem and possible solutions.

The talk draws heavily on JUCE concepts, so it may be somewhat challenging for those completely new to the JUCE C++ framework.

The talk will include real-world examples, a step-by-step guide, and additional helpful references for future self-study.
---

Slides: https://data.audio.dev/talks/2024/bug-free-juce-ui/slides.pdf
---

Jan Wilczek

I am an audio programming consultant and educator, the creator of TheWolfSound.com blog and YouTube channel dedicated to audio programming.

In 2023, I launched "DSP Pro," an online course on digital audio signal processing tailored for complete beginners. DSP forms the backbone of audio processing, crucial for applications such as DAW plugins.

I offer one-on-one coaching for ambitious students and aspiring audio programmers, providing personalised guidance to help them excel.

Beyond teaching, I work as a consultant and freelancer in audio programming. My main interests include C++, software architecture, and mobile development, especially as they relate to audio.

Since 2024, I have been in charge of JUCE's YouTube channel development.

I have published research on Virtual Analog modeling of distortion circuits using deep learning techniques.

Regarding my academic background, I graduated with honors from Friedrich-Alexander-Universität Erlangen-Nürnberg, completing an elite master’s program in Advanced Signal Processing and Communications Engineering. I also hold a Bachelor of Engineering in Acoustic Engineering from the AGH University of Science and Technology in Kraków.

I work from home in Katowice, Poland.
---

ADC is an annual event celebrating all audio development technologies, from music applications and game audio to audio processing and embedded systems. ADC’s mission is to help attendees acquire and develop new audio development skills, and build a network that will support their audio developer career.
Annual ADC Conference - https://audio.dev/
https://www.linkedin.com/company/audiodevcon
https://twitter.com/audiodevcon
https://facebook.com/audiodevcon
https://instagram.com/audiodevcon
https://www.reddit.com/r/audiodevcon/
https://mastodon.social/@audiodevcon
---

Streamed & Edited by Digital Medium Ltd: https://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
Jim Roper
Jonathan Roper
Prashant Mishra

#adc #cpp #juce #audiodev #dsp #audio #conferenceaudio #audioprocessing #audioproduction #audioprogramming #musictech #soundtech #audiotech #audiotechnology

Filed under: UncategorizedTagged with: , , ,

A Critique of Audio Plug-In Formats – VST, AU, AAX, JUCE and Beyond – Fabian Renn-Giles – ADC 2024

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

A Critique of Audio Plug-In Formats - VST, AU, AAX, JUCE and Beyond - Fabian Renn-Giles - ADC 2024
---

Audio plug-in formats such as VST, AU, and AAX have revolutionized the audio workflow, empowering a whole industry of creative coders. However, as programming paradigms and user expectations evolve, the design decisions of these established formats must be re-evaluated. This talk critically examines these design choices, exploring how they can be improved, and there is a new contender: CLAP.

The presentation is divided into two sections: a developer-focused critique and a customer-centric analysis. The developer-focused section delves into fundamental design flaws in plug-in APIs, such as stateful lifecycle management, poor single-use interface design, and why the overarching synchronous “process block” design may become quickly outdated with ever-increasing specialized hardware. The talk also discusses more audio plug-in specific issues like ambiguous parameter/state ownership, the limited utility of the “maxSamplesPerBlock” parameter, and what we can learn from Linux about negotiating bus formats.

The second section critiques audio plug-ins from the user’s standpoint. The talk explores major pain points such as lack of portability, cumbersome copy-protection mechanisms, and the archaic practice of plug-in scanning. The section concludes with a call-to-action for the industry to adopt unified standards as the only real solution to these problems.
---

Slides: https://data.audio.dev/talks/2024/critique-of-audio-plugin-formats/slides.pdf
---

Fabian Renn-Giles

Fabian is a freelance C++ programmer, entrepreneur and consultant in the audio software industry. Before this, he was staff engineer at ROLI Ltd. and the lead maintainer/developer of the JUCE C++ framework (www.juce.com) - an audio framework used by thousands of commercial audio software companies. Before joining ROLI, he completed his PhD at Imperial College London, developing a numerical quantum optics solver with modern digital signal processing techniques and C++/MPI/OpenCL. Fabian is now a regular consultant specializing on low-level real-time C++, embedded audio, time sensitive networks, audio over WiFi and audio plug-in formats. His clients range from early startups to FAANG companies. Additionally, he is a regular speaker at the audio developer conference ADC and other C++ conferences.
---

ADC is an annual event celebrating all audio development technologies, from music applications and game audio to audio processing and embedded systems. ADC’s mission is to help attendees acquire and develop new audio development skills, and build a network that will support their audio developer career.
Annual ADC Conference - https://audio.dev/
https://www.linkedin.com/company/audiodevcon
https://twitter.com/audiodevcon
https://facebook.com/audiodevcon
https://instagram.com/audiodevcon
https://www.reddit.com/r/audiodevcon/
https://mastodon.social/@audiodevcon
---

Streamed & Edited by Digital Medium Ltd: https://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
Jim Roper
Jonathan Roper
Prashant Mishra

#vst #juce #adc #audiodev #dsp #audio #conferenceaudio #audioprocessing #audioproduction #audioprogramming #musictech #soundtech #audiotech #audiotechnology

Filed under: UncategorizedTagged with: , , , ,