I’ve been broadcasting on DS106radio for a few months now with my good friend Lauren Heywood. We grace the airways on Fridays with a regular slot, but I thought it was about time I tried a setup of my own for the odd impromptu radio session.
Shout out to Tim C for his DS106 streaming tutorial, which inspired my take on a streaming setup. Originally, I was tinkering with a whole host of hardware bits and bobs that I have for music production, but I ended up with a much simpler setup that uses an iPhone, MacBook, and USB microphone. The rest is software magic. I’m sure there are ways to do the same kind of setup on Windows if that’s your bag, but for this tutorial you’re going to need a Mac.
Ok, let’s get started with the list of tools. I use the following gear:
- Software: Mixxx, Soundflower, Discord, Your music app of choice
- Hardware: USB Condensor Mic, MacBook Pro, iPhone, Headphones
The main bulk of the setup uses Mixxx; a free and open source DJ app that handles mixing, broadcasting, and recording duties for the radio session. I use Soundflower (also free) to pipe music and vocals from Mixxx into Discord so I can include guest speakers through voice chat. I then pipe the audio from Discord back into Mixxx in order to capture the conversation. Mixxx’s master output is then streamed to the web using the built-in broadcast feature, whilst recording a hard copy to my Mac.
First things first, get your software installed
Install the latest version of Mixxx for your Mac. If you’re running Big Sur you’ll need to use their beta software, but I would recommend this anyway as it has a much better user interface.
Install the most up-to-date Soundflower version available. Soundflower is a little Mac OS utility that enables you to pipe audio around the various apps on your mac through custom audio channels. You can download Soundflower here.
Install Discord and join the amazing DS106radio server (generously set up by Lauren Heywood). You don’t have to use Discord, any other voice chat app will work, but we recommend it for its super smooth voice and text channel features. We’ve set it up like a virtual radio station, with different ‘lobbies’ and ‘studios’, allowing listeners to message along with a show, and drop in and out of the voice channels. It also allows us to have private text chats for the hosts for sharing links, communicating off air, and stuff like that. I’ll write a blog post about the DS106 Discord server in more detail, unless Lauren is planning to, in which case I’ll paste a link here once it’s up.
Enable your iPhone or iPad as an input source
I use Spotify for my audio, which means I need a way to input this into Mixxx. To to this I connect my iPhone to my Mac via a lightning cable and enable the iPhone as an input source using the Mac’s built-in Audio MIDI setup utility. This gives me a direct audio feed from my iPhone, meaning I can broadcast any audio source I want from my phone. I prefer this setup for queuing up music as it gives me a dedicated device to manage the music, rather than juggling Twitter, Mixx, and Spotify all on the desktop. I dunno why, I just like the physicality of it. This will work for iPads too, as they’re basically the same device, just in different sizes.
Connecting Discord using Soundflower
So, what is Soundflower exactly? Think of it a bit like a telephone switchboard that routes audio between various apps that can’t otherwise talk to each other. This will allow you to have guests on your show via voice chat apps. In order to include audio from apps like Skype, Discord, Whereby, etc, you need to be able to pipe the audio from Mixxx into your chat app of choice and then back into Mixx again, in order to be broadcast. For my setup, Soundflower is all you’ll need, and it’s free! If you want to get more complex for whatever reason, then you can use paid apps like Audio Hijack and Loopback. These are the successors to Soundflower, but the OG is all I need for my setup.
Once installed, Soundflower creates two channels on your Mac for routing sound through the OS. There’s a 2 channel option and a 64 channel option. I use both of these to pipe sound in and out of Discord. In Mixxx I set the booth output to ‘Soundflower (2ch)’, this will feed the vocals and music to Discord. This allows me to send audio into Discord so that guests can hear my voice and any other audio that’s playing through Mixxx. To do this I simply set Discord’s audio input to ‘Soundflower (2ch)’.
Next, I set Discord’s audio output to ‘Soundflower (64ch)’ in order to send the guest vocals out of Discord and into Mixxx. In the Mixxx app, I set the Microphone 2 input channel to ‘Soundflower (64ch)’, this completes the loop.
Setting up your music and vocals in Mixxx
Mixxx handles all the broadcasting, recording, and mixing for the radio show. In order to capture my voice, I use my Audio Technica AT2020 USB microphone. Once the mic is plugged in and ready to go, I open Mixxx’s audio preferences, go to the input tab, and set the ‘Microphone 1’ input to my AT-2020 from the dropdown list. I then set the ‘Microphone 2’ input to Soundflower (64ch), this feeds the Discord conversation into Mixxx. (If you’re not including guest speakers through Discord or another app then there’s no need to do this). Finally, under in the same menu, I set the ‘Auxiliary 1’ input to my iPhone. job done, now on to mixing.
Mixing the sound sources
The next sections are going to reference the numbers in the screenshot below.
Once all the different sound sources are running in Mixxx, you’ll see them in the main user interface; mics on the left, music on the right (items 1, 2, and 3 in blue). In order for me to hear the music feed, my voice level, and the Discord audio feed, I select toggle the headphone icons to grey for each input. This allows me to monitor the audio in my headphones. I adjust the gain levels in order to get a happy balance of each source. I do this by ear, whilst making sure the master output (4) isn’t clipping (hitting the loudness threshold at which point the audio distorts).
Once you have a nice loud and clean signal you’re good to go. You can choose to monitor you own audio or not, it’s personal preference. This may depend on the latency of your audio, which will differ depending on the speed of your computer. Under the sound hardware settings menu, I crank up the audio buffer to 2.9 milliseconds to limit any audio latency if and when I need to monitor my own vocals.
Bonus Feature: There is also an option to add sample into a sound board that runs above the inputs. In the example below I’ve added in a sample (5) that I can play on demand. This could be a bumper, sound effect, whatever you want really.
Alright, we’re all set. Lovely jubbly!
Configuring the Broadcast settings
To get the show on the radio requires just a few entries into Mixxx’s live broadcasting preferences.
- Type: IceCast 2
- Host: ds106rad.io
- Mount: Live
- Port: 8010
- Login: Source
- Password: *********
(Get in touch with the DS106 crew on Twitter via #DS106radio)
This is the core stuff you need for broadcasting, but you can add more detail, such as Stream Name, Website, Description, etc. I recommend you do this so that your show has a name that’s displayed to DS106radio listeners. I’d also recommend setting automatic reconnect with 2 or more retries, in case you lose your broadcast connection.
Recording a copy of your show
Mixxx has a recording feature built in which allows you to output an audio recording of your show to your Mac. Simply head over to the recording preferences and select the location you wish to store the recording, and what quality you wish to save at. I recommend 320Kbit MP3 for good quality at a small file size. Also, split the recordings at the maximum file size of 4GB to keep you recordings as a single file, unless you have some marathon sessions. 😅
Ok, so that’s about it folks. Once all your ducks are in a row, check to make sure nobody is broadcasting to DS106rad.io. If the coast is clear, click ‘REC’ (7) and it will light up turn red and begin recording your session. Next, then click ‘On Air’ (6) and it will light up green and begin broadcasting.
Once you’ve finished your show, wait a few seconds after your last song or final words so the stream doesn’t cut off before the end, then click to go ‘Off Air’ (6). Now you can click ‘REC’ again (7) to stop the recording. Thanks for the pro tip on the cut-off Lauren. 🤙
And that’s it! I think I’ve covered all the important bits, but if you try it out and I’ve missed anything useful, let me know in the comments below and I’ll add it to the tutorial. Happy broadcasting!
Here’s a goofy little clip from my first test of the setup with Lauren Heywood, live from Jim Groom’s basement. Caution: strong language at the end. 😂