How To Master Real-Time Audio C++ With Fabian Renn-Giles | WolfTalk #021

Posted by Jan Wilczek on May 20, 2024 · 6 mins read

Former lead developer of JUCE shares his journey and insights into audio programming!

Powered by RedCircle

Please accept statistics and marketing cookies to access the podcast player.

Listen on

All podcast episodes.

Sign up for WolfSound’s newsletter!

Introduction

In this podcast episode, I was delighted to be able one of the most prominent people of the audio developer landscape: Fabian Renn-Giles.

Fabian is a former lead developer of JUCE, currently working as an independent contractor. He has worked with many great companies (e.g., iZotope, Behringer) and has an incredible portfolio. He is regarded as an expert of real-time, low-latency C++ audio programming.

You may know him from his talks at the Audio Developer Conference or at CppCon.

He’s also an incredibly kind and modest person; anyone that I’ve talked to about Fabian only had praise for his skills and his very down-to-earth attitude.

In the light of all the above, this interview is a real treat for everyone who’d like to become a real-time audio C++ expert!

Note: If you like the podcast so far, please, go to Apple Podcasts and leave me a review there. You can do so on Spotify as well. It will benefit both sides: more reviews mean a broader reach on Apple Podcasts and feedback can help me to improve the show and provide better quality content to you. You can also subscribe and give a like on YouTube. Thank you for doing this 🙏

Episode contents

In this podcast episode, you will learn:

  • how Fabian self-taught himself programming at the age of 6 (sic!),
  • how he co-founded Fielding DSP, which serves as his professional outlet for programming services,
  • how he became the lead developer of the JUCE C++ framework and what he learned from it,
  • how to learn real-time audio C++ programming even if you are just starting out,
  • how to become a freelance audio developer like Fabian (what you won’t learn at a university),
  • how to optimize your audio code for maximum performance,
  • the secret story of the “Real-Time 101” talk that Fabian did together with Dave Rowland and which is one of the most widely cited talks in the audio programming space,
  • what are the issues in audio software architecture and how to conceptualize them,
  • what are Fabian’s day-to-day programming tools for optimal productivity.

This episode was recorded on January 26, 2024.

Tips from Fabian on C++ audio programming

  1. A mentors should let their mentees fail and learn from their mistakes.
  2. Always be proud of your code.
  3. Find a good company to learn at.
  4. (on writing clean C++) “How would you write it in Java?”
  5. Zoom out code to see if code looks good.
  6. Don’t use auto-formatters.
  7. To get contracting jobs, do conference talks.
  8. There’s more audio-related work out there than you think.
  9. Network with other developers.
  10. Work on your CV; climb the ladder of well-known companies.
  11. Don’t be too hard on yourself, follow your passion and interests (but take it with a grain of salt).
  12. Good learning strategy of audio: bottom-up, close to the hardware.
  13. Use Godbolt; learn to read assembly.
  14. Command to ChatGPT: “Explain it to me like a C++ developer”.
  15. Use study groups.
  16. You can learn a lot from debugging code.
  17. Did the compiler vectorize? (It should, for optimality).
  18. Is there a call instruction in assembly? (There should not be, something did not inline).
  19. Vector instructions are rare to write manually.
  20. Compiler can have bugs.
  21. Think of end value for your customer.
  22. Split your app into business logic and a real-time audio part.
  23. Use VST3 or AAX SDKs directly to learn the architecture.
  24. 80% of the work is groundwork (easy coding).

References

Below you’ll find all people, places, and references mentioned in the podcast episode.

  1. People
    1. Fabian Renn-Giles
      1. Fielding DSP
        1. Reviver plugin
      2. LinkedIn
    2. Marius Renn (Fabian’s brother)
    3. Johannes Auer
    4. Christoph Kaup
    5. Tom Poole
    6. Julian “Jules” Storer
    7. Andre Bergner
    8. Timur Doumler
  2. Companies & products
    1. MetroWerks’s CodeWarrior
    2. Behringer
    3. IBM PC
    4. LCSI LogoWriter
      1. Manual on Internet Archive
    5. iZotope
    6. Syng
    7. PACE
    8. Tracktion
  3. Universities
    1. Heidelberg University
    2. Imperial College London
  4. Programming languages
    1. C++
      1. JUCE framework
        1. Forum
        2. Multibus API
      2. C++ Concurrency in Action book by Anthony Williams
    2. Python
    3. SOUL
    4. Swift
    5. Rust
    6. Java
    7. HTML
    8. JavaScript
    9. Lua (integrates well with C++, very simple)
  5. Plugin formats
    1. AU
    2. VST
    3. AAX
  6. Software Engineering Concepts
    1. Model-View-Presenter (MVP) pattern
    2. Test-driven development (TDD)
  7. Software
    1. Crill project by Timur and Fabian
    2. WebKit
    3. Digital Audio Workstations
      1. Logic (currently Logic Pro)
      2. Ardour
      3. Digital Performer
  8. IDEs
    1. eMacs
    2. Visual Studio Code
  9. Conference talks
    1. Real-Time 101 from ADC 2019 by Fabian and Dave
      1. Part 1
      2. Part 2
    2. Audio playback synchronization from ADC 2021 by Fabian
    3. Real-time sins & confessions in C++ from ADC 2023 by Fabian
    4. Linux Audio API (ALSA) from The Audio Programmer Meetup by Fabian
    5. Herb Sutter’s talk on a garbage collector from CppCon
    6. Clang performance annotations talk from CppCon by Ofek Shilon
  10. Resources for learning audio programming
    1. ADC mentorship program
    2. Fabian’s JUCE forum post on vectorization
    3. ChatGPT

Thank you for listening! 🙏

Who should I invite next? Let me know in the comments below!

Share this page on:

Comments powered by Talkyard.

Please accept marketing cookies to access the display and add comments.