ADC 2018 Workshops

We are happy to give you a few more details on this year’s ADC workshops. We hope you find them interesting!

Everything you ever wanted to know about building audio plugins in JUCE (Beginner to intermediate)
Ed, Fabian, Noah, Tom
Monday 19th November 2018, 9:30am-12:30pm

Writing an audio plug-in can be a truly daunting task: there a multitude of plug-in formats and DAWs, working with live audio requires a mastery of hard real-time programming, and sharing data between the audio and GUI threads is a subtle synchronisation minefield. In this workshop you will learn from the experts the best practices in creating state-of-the-art JUCE plug-ins, focussing on thread safety and DAW compatibility.

This workshop will cover

  • The golden rule of audio processing
  • Adding parameters to your plug-in and accessing them in a thread-safe way
  • Synchronising the audio and GUI threads
  • Handling plug-in state and program switches
  • Using the AudioProcessorValueTree class to simplify your plug-in’s code
  • Subtle differences between major DAWs and plug-in formats
  • Debugging and testing your plug-in

Attendees will implement features showcasing these principles in a simple audio plug-in developed during the workshop under the guidance of the JUCE developers.

Designing digital effects with state-of-the-art DSP and audio filter algorithms (Intermediate to Advanced)
Ivan, Zsolt
Monday 19th November 2018, 14:00-17:00

This workshop will cover the basics of digital filtering theory including the Z-transform, the calculus of classic digital filter coefficients, and the standard structures of filter algorithms. Participants will use that knowledge to code filters in a JUCE application from scratch and to display the frequency response in real time. We will then cover concepts and tricks not readily available in DSP textbooks, including:

  • Efficient smoothing of filter cutoff frequencies with ramps or filter structure design
  • Consistent filter responses over the whole frequency range, even for frequencies close to the Nyquist frequency
  • Design of specific audio filters with singular structures and sonic properties using additional zero-delay feedback loops and nonlinear blocks
  • Examples of benchmarking and cross-platform optimisation techniques

By the end of the workshop, attendees will have gained knowledge relevant to state-of-the-art plug-in development. They will have successfully coded efficient filter algorithms that might be used in professional EQ, phaser or synthesizer plug-ins, with modulation capabilities. Advanced developers will be able to further deepen their DSP knowledge by working through optional homework assignments, and some quick reviews of classic prototyping and simulation environments such as Scilab and LTSpice.

Attendees are not required to have attended last year’s DSP workshop.

Optimising graphics performance (All levels)
Jules, Tom
Monday 19th November 2018, 9:30am-12:30pm

This workshop will cover in depth what happens under-the-hood when graphical UIs are rendered, with the aim of helping you to better understand how to structure and optimise your code to get the best possible drawing performance.

We will cover topics including:

  • The architecture and principles behind vector graphics rendering
  • The different rendering engines available in JUCE
  • How UI component repainting works, and how to use it effectively
  • Efficient use of images
  • How best to render text
  • How and when to use off-screen caching
  • How and when to use openGL
  • How different operating systems differ in performance
  • Tricks and tips for measuring and debugging performance problems

Attendees will guided through development of an example animated GUI, learning how to go from a naive initial implementation to a higher performance, optimised version.

Under the hood of JUCE: Using platform-specific APIs and native GUIs within JUCE (Intermediate to Advanced)
Adam, Fabian, Lukasz
Monday 19th November 2018, 14:00-17:00

In this workshop we will cover everything you need to know about how to integrate platform-specific APIs and native UI elements into your JUCE app. If you are creating a JUCE-based app and only need to call a few platform-specific APIs, or you have a full-fledged native app with a JUCE based audio engine, this workshop will have you covered.

We will discuss the following topics:

  • Adding native code files to your JUCE app
  • Invoking native Obj-C, Java and .NET code
  • Receiving callbacks from Obj-C, Java and .NET code
  • JUCE classes to help you embed native UI elements to your app
  • Embedding a JUCE component into your native UI
  • Adding platform-specific 3rd-party SDKs to JUCE apps (e.g. Facebook SDK etc.)
  • Common gotchas when mixing platform-specific and JUCE code/UI

Attendees will interactively work with two projects: an app written in pure JUCE and a native app (we will provide a bespoke iOS/macOS/Windows and Android version of this app). During the workshop we will add some platform-specific functionality and native UI elements to the pure JUCE app, and add a JUCE-based audio engine to the native app.

Please note that there are always two workshops running in parallel. So please check the times!
As it is early days, some of the details here are subject to change including who is currently listed as the presenter of each workshop


For those of us who are unable to attend because we’re on the other side of the planet, have you considered selling downloadable copies of the video-taped workshops (assuming you will video tape them)? I know the ADC talks are streamed to youtube, but the workshops aren’t.
@fabian @jules @ed95 @dave96


I’d be up for this aswell as unable to attend this year.

Thanks for the suggestion, we’ll look into it.
Workshops are hands on and with a lot of one-to-one discussions so it poses some challenges in terms of capturing meaningful information. I’ll discuss with the film crew closer to the date.

@jb1Did anything more come of this?

I’d also be interested in accessing workshop materials, being unable to attend this year.

Some of the stuff being covered looks like fundamental best practice for JUCE, and even access to slides or code examples would be helpful I think.



Unfortunately we’re not able to publish the workshop materials at this point, although some of it will reappear in tutorials in the future.

hi jb - are there any details posted of where to catch the live streams tomorrow/wed?