Live Streaming with Multiple Musicians

Motivated by all the show cancelations due to the COVID-19 pandemic, I came up with a way to live stream performances with my band. If you’ve tried this over teleconferencing apps like Zoom, you know that the audio quality sucks and the latency makes playing together virtually impossible. The method here solves both of these problems, with the caveat that only some performers can see and hear the other players.

Streaming Platform

Each performer will need their own streaming account. There are several streaming platforms to choose from, but unless you know what you’re doing, use Twitch. It’s free, reliable, and vastly easier to use than others. Go sign up for an account and read through their overview of streaming music on the service:

Some other free options are YouTube Live and Facebook Live. Both of these have serious shortcomings, such as being limited to popular accounts, and are much harder to set up for high quality streaming. In particular, the browser-based webcam streaming features of these platforms are terrible as far as quality goes. So, seriously, use Twitch.

Finally, there are paid services that allow private shows, e.g. only to ticket holders. I’m not familiar with these so I won’t be covering them here.

The Chain

We’re going to be starting with the initiator performer, and have each subsequent downstream performer add their own video and audio on top of the previous upstream performer:

The last performer in the chain will be broadcasting the final stream to the world, so this person should be logged in with the band’s main Twitch account that you share with your listeners.

The initiator won’t see or hear any of the downstream performers, and so will be unable to sync up with or respond to what the downstream performers are playing. Therefore it’s important that the initiator “conducts” the entire performance and keeps the rhythm. This works best of the initiator is a singer playing a rhythm guitar/piano part, and either the band is playing a well-rehearsed arrangement or the initiator verbally cues the other players to take solos at the appropriate times etc.

The Initiator

The initiator’s job is the simplest technically but the most confounding musically. As mentioned above, the initiator “conducts” the entire performance by constantly keeping the rhythm and cueing any improvised sections for the downstream performers, all while playing “alone” without seeing or hearing the other musicians.

The initiator starts their own stream as if they are doing a solo performace. The simplest way to do this is to download the Twitch mobile app, sign in and hit “Go Live”. This usually looks and sounds perfectly acceptable for an acoustic guitar + voice, but for higher quality sound, follow the downstream instructions on setting up OBS on a computer with an external mictrophone.

Downstream Performers

Each downstream performer’s job is simple muscially—just play along to the initiator—but requires an involved technical setup. At a minimum you’ll need a reasonably capable computer and headphones. Any Mac from 2015 or newer (and likely some older models, too) should suffice. (I’ve only tried this with Macs but it should work with PCs too. Let me know if you can fill in instructions for Windows.)

The gist is that you will be playing back the upstream performer’s stream in a browser, capturing that video and audio, and then compositing your own webcam and audio on top of the capture. An outline of the steps looks like this, with details below:

  1. Create a Twitch account
  2. Install OBS Studio streaming software
  3. Install Blackhole audio capture driver
  4. Create a multi-output audio device
  5. Open upstream performer’s stream
  6. Configure OBS for compositing

1. Create a Twitch account

If you haven’t done so already, create a Twitch account and log in:

2. Install OBS Studio

OBS is a free and open-source streaming software that can send streams to Twitch, Facebook, YouTube, etc. It allows combining multiple sources of video and audio and arranging/mixing them, which is exactly what we need.

Here’s a quick video explaining how to do a basic set up of OBS for music streaming on Twitch:

The main thing to do here is to run the Auto-Configuration Wizard. It’ll prompt you the first time you open OBS, but if you missed it it’s under the Tools menu:

3. Install Blackhole

macOS doesn’t have a built-in mechanism to capture the computer’s own audio output so we’ll be installing Blackhole, a free and open-source virtual driver that does exactly that:

4. Create a Multi-Output Audio Device

While Blackhole allows OBS to capture the computer audio output of the upstream performer’s stream, you also need to be able to hear them so you can play along in rhythm. While OBS will let you monitor its own output to a separate audio device, there’s considerable lag (100+ ms) which makes this hard to play to. Instead, you can get (almost?) zero-latency monitoring by having the computer audio output routed to your headphones alongside Blackhole by creating a “multi-output device”:

  1. Open Audio MIDI Setup in /Applications/Utilities
  2. Click the “+” button and select Create multi-output device
  3. In the righthand pane, first enable your headphone output and make sure it is set as the “Master device”
  4. Second in the righthand pane, enable Blackhole and enable Drift Correction for it
  5. Click on the gear icon at the bottom-left and select Use this device for sound output

5. Open Upstream Performer’s Stream

Go to your immediate upstream performer’s Twitch channel page. Click the gear icon on the video player and select Popout Player. This makes it easier to configure OBS to only capture the stream video without all the junk surrounding it. You can close the bigger window with Twitch chat to save space and CPU cycles. Get the upstream performer to start streaming and play something so you can make sure you can hear them.

6. Configure OBS for Compositing

We’re going to have OBS capture your computer display but cropped to just the upstream Twitch player window. You’ll need to resize and arrange the Twitch and OBS windows so they don’t overlap. This would be a good time to quit any unsed apps and turn on Do Not Disturb mode so you don’t accidentally broadcast any embarrassing emails.

Now we’ll set up four ”sources” in OBS: your webcam video, your mic input, the upstream Twitch video, and the Blackhole audio capture for the upstream audio:

If you did all that correctly, you should be seeing your webcam composited with the upstream performer on the canvas, the green audio peak meter moving on both of the audio sources as the upstream performer and you make sound, and you should also be hearing the upstream performer in your headphones.

Communication and Soundcheck

Because there is a large delay between each streamer (often 10+ seconds), communication and getting levels correct is a challenge. Here are some tips:

Questions? Comments?

If you try this out, let me know how it goes!