Posted on

Programming for Audio Professionals

When I first really broke into games, I fast came to a realization that I had to pick a career path.

I needed to choose to become a very proficient sound designer, or a very proficient software developer.

See, I’d come from various other audio-related disciplines where specializations were weird, wide, and varied.  People just did VO, or on-set work, or post production, etc.

But in AAA games – for the most part – that’s not how it works.  Certainly people specialize, and certainly there are exceptions to any rule – but usually there aren’t that many varied positions at a AAA studio.  Often there are people who make sounds, people who make the audio systems work, and people who drive a project’s schedule and creative vision.

At the moment of revelation – where I knew I had to pick content creation or system building – I also knew I immediately had my answer.  Every year there are a lot of new, young people who are vying for positions to make content for games – and I wasn’t willing to put in the effort to compete.

I’m still not.

But the technical bar – the one that required software development and math knowledge – that was a much higher difficulty bar for me and individuals like me.  I knew the competition would be less, the reward high, and all that stopped me would be my willingness to work.

Oh… and understanding what the heck “audio programming” even was.

My Assumptions

My first thought when jumping into working with audio software was “I know!  I’ll make plugins!”

Now, I’m pretty sure this is every n00b’s first thought.

Looking back on it, that was laughable.  I didn’t know what a circular buffer (or any buffer) was, I knew nothing about signal processing math, working with samples, etc.

I knew literally nothing.  I assumed that I could just read a book and pick it all up.

With no background.

If you’re wondering – that’s not how it works.  Not unless you did well at math in high school or college and picked up Calculus and other advanced math.  Or you studied computer science and leaned towards learning how things like audio or graphics processing work.

(Or, I guess you could be young today and pick it all up by YouTube – but YouTube didn’t exist when I was a teenager.)

So while I knew how to operate middleware and work with audio – I wanted something deeper.  I not only wanted to learn how to tweak knobs and use plugins to make sounds, I wanted to know how you build those knobs and plugins.

Except, everywhere I went – the barrier to entry was too high.  I didn’t have the math skills or I didn’t have the right kind of programming knowledge.

Until I was introduced to ChucK.  (My thanks to Aaron McLeran at Epic)

C++ Can Be Rough

The thing about programming and audio – if you’re coming from the perspective of a content creator (one who makes sound effects, beats, music, whatever) – is that the learning curve is ridiculously steep.

You certainly can play with audio in fairly easy to pick up languages like Python and JavaScript – even C# and Unity!  But at some point you realize that those languages don’t give you all the tools.

What I learned within a few months of playing around is that nearly everything in audio software comes back to C++

  • Unity’s audio system?  Can play with it in C# – but it was built in C++
  • Wwise’s audio system?  Can play with it in C# – but was built in C++
  • Plugins?  New languages help you create them – that code turns into C++
  • Web audio?  Still backed by C++

There’s very little getting past that fact.  To me, that’s a tremendous bummer.  Because you don’t just go learn “how to write C++”, you have to learn “how to use C++”.

Compared to other predominant languages, C++ is difficult to learn.

And if you’re trying to learn how audio works from a software development perspective, DSP math, and C++ that’s a lot to take on all at one time.

I know, because that’s where I found myself when I picked up ChucK.

ChucK is Easy

Chuck is described by its creators as a “strongly-timed, concurrent, and on-the-fly music programming language”.   That’s a fancy way to say you can use it to make music (or other sounds) live in real time, changing the sounds and program as it’s executing.

It’s mildly similar to things like Pure Data, Max/MSP, and perhaps SuperCollider or CSound (I haven’t used the latter two, so I’m making radical leaps and assumptions).

But in my opinion – it’s the easiest programming language for audio content creators to start learning how to program sound.

I’m not talking scripts for your editor.

I’m not talking about speeding your workflow up (though that’s possible).

I’m taking about messing with sound, with code.

The language goes so far as to break typical syntax (ie: programming grammar) conventions specifically to make it easier for people with an audio background.

If you’ve ever plugged a piece of audio gear into other gear, a mixer, or a speaker – you can learn ChucK programming.

I’m not kidding.  It’s really, really easy.

Show Me!

Rather than describe all of the specifics of the language, I think it’s easier for you to understand if you see it work.

Dr. Ge Wang – creator of ChucK – did just that during his TEDxStanford talk.  If you take the time to watch it, you’ll be inspired by his warmth, enthusiasm, and creativity.

If that’s too long for you, I’ve setup 3 videos that you can watch on the page for my new guide – they’ll take you less than 5 minutes to watch altogether.

I Want to Teach You

So, this is cool and all – but why should you learn ChucK?

If you’re going into programming or technical sound design, how exactly will it help you?

You’re going to get an email tomorrow going into more detail on that.

For now, I leave you with the following information:

“Like Magic” – A guide to programming sound with ChucK is available for presale right now.  It will be available for purchase through Friday evening (PST).  Every purchase will get a copy of the guide in PDF before the end of February.

Within it, you’ll learn:

  • How to synthesize sound waves with ChucK
  • How to use ChucK from the command line/terminal
  • How to use randomization to procedurally create sound
  • How to play and manipulate .wav files with ChucK
  • How to create your own custom drum machine from a single .wav file drum loop
  • How to control and manipulate time in a programmatic environment
  • How to utilize ChucK’s existing virtual instruments, effects, and filters and customize them
  • How to utilize multi-threaded programs
  • How to use modulation to customize and affect your sounds even further
  • How to record ChucK’s output to your DAW
  • How to control ChucK with MIDI input devices
  • How to send and receive OSC messages with ChucK

and more.

You can preorder it for $10 until Friday evening, at https://adamtcroft.com/like-magic

After the preorders are done, the price will go up (as always).  So jump on it if you’re interested.

See you tomorrow.


Copyright 2016-2021, NIR LLC, all rights reserved.