Tag: cpp

How To Recreate/Restore a Full Game Boy Advance Soundtrack in High Quality – Vincent Dortel – ADC 2024

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

How To Recreate/Restore a Full Game Boy Advance Soundtrack in High Quality - Vincent Dortel - ADC 2024
---

A new subfield of video game music has recently emerged: some people call it music "restoration" (or recreation). It comes from the desire to preserve and share incredible soundtracks that were cursed by hardware limitations at the time they were composed. For instance, the Game Boy Advance was using sequenced music, associated with sound samples. Those sounds had to be heavily compressed so everything fits on a 8Mb cartridge, and the audio engine had limited processing power, low sample rate, cheap output speakers...

In this talk, I would like to detail how I restored the entirety of the soundtrack from the first two Golden Sun games (2001-2002), by tracking down the original hardware that was used to record the samples, extracting the midi sequences, carefully studying the subtleties for each instrument, applying modern mixing techniques, and even doing a bit of reverse engineering. The whole process was improved by creating python scripts and a custom VST in C++.
---

Slides: https://data.audio.dev/talks/2024/how-to-recreate-restore-a-full-game-boy-advance-soundtrack/slides.pptx
---

Vincent Dortel

Vincent is an audio programmer with 12 years experience in the video game industry, he worked for several studios such as Quantic Dream, Rocksteady, Ubisoft and Microsoft. He's now a freelancer, which allows him to split his time between contractor work for game studios and personal projects. He likes to combine his passion for music and games with his programming skills to tackle fun challenges. Sometimes he secretly develops VST plugins when no one's looking.
---

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

#adc #audiodev #gameboyadvance #goldensun #goldensun2 #audio #audioprocessing #audioproduction #audioprogramming #music #musictech #soundtech #audiotech #audiotechnology

Filed under: UncategorizedTagged with: , , ,

Wait-Free Thread Synchronisation With the SeqLock – Timur Doumler – ADC 2024

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

Wait-Free Thread Synchronisation With the SeqLock - Timur Doumler - ADC 2024
---

When developing real-time audio processing applications in C++, the following problem arises almost inevitably: how can we share data between the real-time audio thread and the other threads (such as a GUI thread) in a way that is real-time safe? How can we synchronise reads and writes to C++ objects across threads, and manage the lifetime of these objects, while remaining wait-free on the real-time thread?

This talk is the second in a series of talks about thread synchronisation in a real-time context. In the first episode, given at ADC 2022, we focused on the case where the real-time thread needs to read a sufficiently large, persistent object that is simultaneously mutated on another thread. In this second episode, we focus on the reverse case: the real-time thread needs to write the value while remaining wait-free, and while other (non-real-time) threads are reading it.

The traditional solution for this problem in audio processing code today is double buffering. This strategy works well in certain cases, but like every algorithm it has certain tradeoffs. If we look beyond the audio industry, it turns out there is actually another strategy that has more favourable tradeoffs for some use cases: the SeqLock.

We describe the general idea of the SeqLock, discuss the different parts of the algorithm, and show a working reference implementation. It turns out that in order to implement a SeqLock portably and without introducing undefined behaviour, we need to reconcile the algorithm with the C++ memory model, which presents an interesting challenge. In order to make it work and be efficient, we need to be very careful with our use of memory fences, memory ordering, and atomic vs. non-atomic memory accesses. Along the way we will learn useful things about writing lock-free code in Standard C++.

Finally, we compare the tradeoffs between SeqLock and other approaches to this problem, offer some guidelines on which approach to use when, and present a proposal to add the SeqLock algorithm to the C++ Standard.
---

Timur Doumler

Timur Doumler is the co-host of CppCast and an active member of the ISO C++ standard committee, where he is currently co-chair of SG21, the Contracts study group. Timur started his journey into C++ in computational astrophysics, where he was working on cosmological simulations. He then moved into the audio and music technology industry, where he has spent over a decade of his career, worked on projects such as NI Kontakt and the JUCE framework, and co-founded the music tech startup Cradle. In the past, Timur also worked for JetBrains, first as a developer on CLion's C++ parser and later as a Developer Advocate for C++ developer tools. Currently, Timur lives in Finland, where he organises the monthly C++ Helsinki meetup and works as an independent C++ consultant. Timur is passionate about clean code, good tools, low latency, and the evolution of the C++ language.
---

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

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

Filed under: UncategorizedTagged with: , , ,

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

Branch-Free Oscillators for Virtual Analog Software Synth in C++ – Angus Hewlett – ADC 2024

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

Branch-Free Oscillators for Virtual Analog Software Synthesizer Applications in C++ - Angus Hewlett - ADC 2024
---

A discussion of techniques and approaches for building parallel branch-free oscillators for VA software synthesizer applications in C++ - exploring the stack from low-level machine instructions and CPU architecture up to signal processing concerns and language-level abstractions.

How can a branch-free design help you build more performant oscillators, how does it work underneath, and what are the advantages, disadvantages and potential pitfalls of this type of design approach?

If you're curious about CPU architecture and what's going on underneath your code, this talk will be an interesting window into that sometimes less-than-obvious world.
---

Slides: https://data.audio.dev/talks/2024/branch-free-oscillators/slides.pdf
---

Angus Hewlett

Technologist, Founder, Product Designer, Engineer, Manager and Mentor.

Founded FXpansion at the turn of the millennium and built software drum machines, synthesizers and utilities for 16 years.

Exited to ROLI in 2016 and joined their team as VP Engineering, managing a cross-disciplinary team of dozens of engineers and designers across software, hardware, web applications and R and D.

CTO at Image-Line from 2021-2023.

Now building a new product line to be released in 2024, and helping others to realise their product development dreams.
---

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

#adc #oscillators #audiodev #cpp #audio #audioprocessing #audioproduction #audioprogramming #sound #cppprogramming #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: , , , ,

Workshop: Klang – Live and Expressive C++ for Audio – Chris Nash – ADC 2024

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

Workshop: Klang - Live and Expressive C++ for Audio - Chris Nash - ADC 2024
---

A practical introduction to Klang, a C++ dialect (language extension) for audio, and rapIDE (rapid audio prototyping IDE), a complete C++ development environment in a DAW plugin, supporting live code editing, recompiling, and debugging. Developed to improve the liveness and usability of professional DSP practices, both tools facilitate the expressive design of new interfaces, sounds, and audio processes, while lowering the threshold to C++ for newcomers and learners, without compromising its expressive ceiling or performance.

ABOUT THE WORKSHOP

The workshop will feature discussions, live demonstrations, structured practical exercises, and assisted open exploration of the Klang language and rapIDE development platform, both available free for non-commercial use.

ABOUT THE TECHNOLOGIES

The Klang language (http://github.com/nashaudio/klang) is a single header include, compatible with any C++17 enabled platform, transforming C++ into an audio programming language with rich support for audio types, processes, and DSP primitives - notably also adding support for concise, explicit expressions of signal flow, allowing C++ code to more closely mirror block diagrams

The rapIDE IDE (aka Klang Studio; http://nash.audio/klang/studio) is a suite of cross-platform (Windows/Mac) audio plugins (in VST and AU format) that contain a complete integrated development environment (IDE) based on the LLVM/clang toolchain, supporting live, in-plugin coding, compiling, hot-swapping, analysis, graphing, and debugging without stopping the host (or even playback). Designed for rapid prototyping of C++ audio processes (e.g. synthesisers, effects), rapIDE is designed to integrate with existing workflows, such as desktop, embedded, and web audio development, but also provide a more immediate and immersive way to explore sound with C++.

FURTHER INFORMATION

Both technologies are pre-release and under active development, maintained by nash.audio, a non-profit organisation supporting projects in music and technology. Delegates require a Windows or Mac laptop, and are recommended to download and install rapIDE (aka Klang Studio) from nash.audio/klang in advance of the session.
---

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 professional audio developer degree programme.
---

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

#adc #daw #audiodev #cppprogramming #cpp #dsp #audio #audioprocessing #audioproduction #audioprogramming #musictech #soundtech #audiotech #audiotechnology

Filed under: UncategorizedTagged with: , , ,

Introducing ni-midi2 – A Modern C++ Library Implementing MIDI2 UMP 1.1 and MIDI CI 1.2 – Franz Detro

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

Introducing ni-midi2 - A Modern C++ Library Implementing MIDI2 UMP 1.1 and MIDI CI 1.2 - Franz Detro - ADC 2024
---

MIDI 2.0 implementations arrived in recent macOS and Linux versions, and Windows MIDI 2.0 support is expected to arrive end of 2024.

ni-midi2 is a modern C++ library implementing MIDI2 UMP 1.1 and MIDI-CI 1.2. The platform-independent library allows you to easily migrate your code to support MIDI 2, while maintaining compatibility to the traditional MIDI 1 protocol.

The talk will cover basic concepts of the library and real-world examples of how it helps you to achieve protocol-agnostic MIDI 2 support in your codebase.
---

Slides: https://data.audio.dev/talks/2024/introducing-ni-midi2/slides.pdf
---

Franz Detro

C++ developer and Audio/MIDI system architect covering a wide range of technologies, including firmware, USB, MIDI, middleware and Plugin frameworks.

Member of the MIDI Association Technical Standards Board and contributor to MIDI 2.0 and USB Audio/MIDI Device Class specifications.

Co-founder of midi2.dev - a collaboration platform for MIDI 2.0 developer resources.
---

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

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

Filed under: UncategorizedTagged with: , , ,

scipy.cpp – Using AI to Port Python’s scipy.signal Filter-Related Functions to C++ for Real Time Use – Julius Smith – ADCx Gather 2024

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

scipy.cpp - Using AI to Port Python's scipy.signal Filter-Related Functions to C++ for Use in Real Time - Julius Smith - ADC 2024
---

This is a progress report on the following evolving chatbot workflow:

1. "Translate this Python function and its helpers to C++ .h and .cpp files, converting any doc strings to C++ Doxygen comments: ..." [Claude 3.5 Sonnet is hard to beat]
2. "Generate a progressive sequence of unit tests in Catch2 format"[ChatGPT-o1 can be amazing]

In general, Python translates smoothly to C++. The chatbots are especially strong in knowing API details, command-line options, and modern C++ idioms. The biggest pitfall seems to be complex algebraic manipulations.

When one-shot inference fails (ChatGPT-4o, Claude 3.5 Sonnet), o1 should be tried.
---

Julius Smith

Julius O. Smith is a research engineer, educator, and musician devoted primarily to developing new technologies for music and audio signal processing. He received the B.S.E.E. degree from Rice University in 1975 (Control, Circuits, and Communication), and the M.S. and Ph.D. degrees in E.E. from Stanford University, in 1978 and 1983, respectively. For his MS/EE, he focused largely on statistical signal processing. His Ph.D. research was devoted to improved methods for digital filter design and system identification applied to music and audio systems, particularly the violin. From 1975 to 1977 he worked in the Signal Processing Department at ESL, Sunnyvale, CA, on systems for digital communications. From 1982 to 1986 he was with the Adaptive Systems Department at Systems Control Technology, Palo Alto, CA, where he worked in the areas of adaptive filtering and spectral estimation. From 1986 to 1991 he was employed at NeXT Computer, Inc., responsible for sound, music, and signal processing software for the NeXT computer workstation. After NeXT, he became a Professor at the Center for Computer Research in Music and Acoustics (CCRMA) at Stanford, with a courtesy appointment in EE, teaching courses and pursuing/supervising research related to signal processing techniques applied to music and audio systems. At varying part-time levels, he was a founding consultant for Staccato Systems, Shazam Inc., and moForte Inc. He is presently a Professor Emeritus of Music and by courtesy Electrical Engineering at Stanford, and a perennial consultant for moForte Inc. and a few others. For more information, see https//ccrma.stanford.edu/~jos/.
---

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 ADCxGather Team:

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

#scipy #python #ai #adc #audiodev #dsp #audio #conferenceaudio #audioprocessing #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: , , ,