Credit for original article goes to: http://twitch-guides.github.io/audio/routing-single/
Audio routing with a DAW
(DAW: Digital Audio Workstation. Basically a software mixer, audio processor, VST host, recorder and many more things)
This is probably the most flexible way to handle multiple audio streams using single computer setup – you can separate audio sources like applications, games, VoIP applications (Skype, Discord etc.), control if only you or your stream should be able to hear them, process them in real time and record them separately if needed.
The idea is that you create several virtual Windows audio devices, for example one for games, one for other applications, whatever you need. Those devices feed into your DAW (along with your microphone) which you can use to control volumes and whatever else you want to do with the audio. Then you send the audio from there into another virtual Windows audio device which you can select in OBS/XSplit.
Installing the necessary tools is fairly quick, but you will have to invest some time into learning how to use the DAW that you will be sending your audio through if you have never used one.
Installing the tools
- Make sure you have an ASIO driver. If you have an audio interface or any other (semi-)professional sound card it should have one, otherwise you will need to use Asio4All. I won’t cover how to set up Asio4All here, but it’s really not hard.
- Install Synchronous Audio Router
- Pick your favorite DAW software and install it.
Some nice DAWs to choose from:
- Ableton Live: Developed for live performing and recording alike, has nice ways to use oneshot clips and extremely good MIDI controller support
- Studio One: A bit more conventional, but still very slick UI. Has a free version, but unlike the paid one it doesn’t support VST plugins and the integrated plugin selection is rather small
- Bitwig: A bit like Ableton Live, but with a different flavor to it. Also somewhat performance oriented
- Reaper: UI is a bit harder to get into at first, but also very powerful and by far the cheapest of them all. Also, the trial lasts 60 days and nothings stops you from using it after it expires. You should probably buy it after that, but nobody’s forcing you to.
They all have their own advantages and disadvantages, it can’t hurt to download some of the trial versions and just see what you like best. If it needs to be as cheap as possible, go with Reaper. I’ll explain the rest of this guide with Reaper in mind because of that, but it’s easily transferable to any of the other ones.
Setting up the Driver
If you want to get going as fast as possible, download this configuration file and save it to %appdata%\SynchronousAudioRouter. It has windows playback devices for Applications, Games, VoIP and Music, windows recording devices for the stream and your voice, and it will send all Steam games to the “Games” device without having to change anything.
If you have something else in mind, feel free to set up your own configuration directly in the driver.
- Start your DAW with admin privileges (the SAR driver currently requires this to work)
- Open the Audio driver settings. In Reaper, Options/Audio/Device.
- Select ASIO Driver: Synchronous Audio Router
- Click on “ASIO Configuration” and then select your driver under “Hardware Interface”
- If you are not using the config file from above, you need to add your playback/recording devices in the driver now for all the channels that you will be needing. Keep in mind that a (windows) playback device will be an input in your DAW and a recording device will be an output in the DAW.
- Now you need to add the new ASIO channels to your DAW. In Reaper, just select the first/last device each like shown in the picture. You’ll have to manually create and assign channels in most of the other DAWs. The first devices on the list belong to your hardware, they might be named differently for you.
Setting up your routing in the DAW
First, create a channel for your Microphone. To do that, press CTRL + T to create it, and then set up the channel. This is basically the same for any channel, whether it’s a Microphone, an Application channel or something entirely different.
- Select the correct input channel
- Turn Monitoring to ON
- Arm the Track for Recording
You should now be able to hear things coming from this input. Next, repeat this for all the input channels you have. It’s probably a good idea to set all your channels to -6dB initially, so you never run into clipping issues. You can always make up the lost volume in a limiter on the master.
Now you’ll want to set up a bus channel for your stream mix and send the microphone channel to a separate output. Create a channel, open its routing panel and select Add new hardware output -> Stream Mix 1/Stream Mix 2 (assuming you used the config file from above). Deselect Send to Master, and use Add new receive -> Add receives from all tracks. After this the routing panel for the channel should look something like this:
Alternatively, you could also just add the Stream output to your master channel, however you won’t be able to exclude certain channels from the stream if you do this. With the setup like above, you could just remove the send to stream from any of the individual channels or turn down its volume to -inf dB and you’ll have muted just that channel for the stream, but you can still hear it.
Finally, add the Voice 1/Voice 2 outputs to your Microphone channel.
You can now select the two audio devices (Voice and Stream) in the OBS settings. They will both be windows recording devices, so they’ll be listed under Mic/Auxiliary Audio Device in OBS Studio. There should be no other Audio devices selected in the OBS settings. OBS should pick up your Audio now.
The final Reaper mixer panel looks like this now:
Next, you could add some VST plugins to your voice channel (like I have done here) and continue to customize things however you need them.
Windows 10 has a mixer built-in where you can send the output of separate apps to different devices.
Other notes & ideas
- Buffer size, latency and CPU usage: In your ASIO driver panel, you should be able to select a buffer size. Smaller buffer sizes require more CPU resources as the audio needs to be processed quicker, but they reduce the latency of your system. Typical buffer sizes are in the range of 64 and 512 samples.
- If you notice delay when monitoring your microphone, lower your buffer size. For the microphone monitoring to feel instant, you need to keep your latency below 10-15ms or so. There are output + input buffers, so to get a latency below 10ms, you need them to be shorter than 5ms (~220 samples at 44.1kHz). Otherwise you might experience this effect.
- If you notice crackle/microstutters or similar things in your Audio, increase your buffer size. You are probably experiencing buffer underflows, meaning your CPU can’t fill the buffer with processed audio quick enough before it needs to be sent to output.
- Switching between monitor & stream on the fly: If you use this setup to have two different mixes for you and the stream, an audio interface with two output pairs is extremely helpful. Usually you can switch the headphones from out 1/2 to 3/4 on those interfaces, so you can send your monitor channel to one and stream to the other. Then you can switch your headphones to either of the channels on the fly.