Recording System Audio Output on a Macbook

Several times I've needed to make a recording of the system audio on my Macbook. Typical reasons are:

  • I'm recording a software demo video, where the software produces audio output.

  • I'm making a video in which I'm narrating over an existing recording or video, so I need to record both my microphone and the existing audio playback while I hear it.

The interwebs suggested a few ways to approach this, and not everything I tried worked. Here's what did!

Blackhole

Per the README, Blackhole is "a modern macOS virtual audio loopback driver that allows applications to pass audio to other applications with zero additional latency."

I installed it using the installer, not homebrew.

Device configuration

This is the tricky part. General instructions are on the Multi Output Device page.

I made two virtual devices, since I wanted to be able to use it with either headphones or (occasionally) with the built-in speakers.

Here are the settings for my two virtual devices. Note that for headphones I selected both "External Headphones" AND my USB audio interface (Revelator IO 24). That way, this virtual device works with either the external interface OR the built-in headphone jack.

For completeness, here's how the Blackhole 2ch device looks in audio-midi setup. I did this a long time ago, but I don't think I did anything special besides running the installer:

Using the virtual device

Whenever you want to record system audio, you must first go into the MacOS audio settings and select the desired virtual device, like so:

Volume control annoyance!

When using one of the virtual output devices, the MacOS volume control is disabled!

This is a bit annoying; it means you need to:

  1. Set output device to (normal) headphone or speaker
  2. Adjust output level
  3. Change output device to the virtual device

If you change your mind and want to change the output level, you have to switch the output device again and repeat the process!

Note that if using an audio interface with its own headphone level control, this becomes a non-issue. It's only really a problem when using the built-in speakers or headphone output jack.

Making screen recordings

I've had good results with Monosnap. It's relatively easy to set up and use, and allows embedding my webcam over a screencast. (I also use it for easily making gifs of no-audio screen recordings - if you find such a gif on this website, that's how I made it!)

Steps to record system audio with Monosnap:

  1. Set the mac's audio output device to the virtual audio device you set up as per above instructions.
  2. Click "Record Video" from the monosnap menu bar icon
  3. Click the settings icon next to the red "Record" button
  4. For audio input, select "Blackhole 2ch"
  5. If also recording another source eg microphone, select that as well. In the screenshot below, I'm recording both system blackhole and the mac internal microphone.
  6. Start recording!

Caveat

One limitation of this approach is you can't change the mix later. This is great for quick screencasts without needing to edit and mix. But if you really hate the balance of eg microphone to system audio - it's a do-over.

You could presumably use a more sophisticated program for screen recording and video editing that supports multiple audio tracks. I haven't tried that; this simple setup works great for my needs.

Making quick audio recordings of system audio

Occasionally I don't really need video, just audio. For that, this command works well:

sox -t coreaudio "BlackHole 2ch"  foo.wav

I hit Ctrl-C when done recording.

Sox is easily installed via brew install sox.