Last night I jumped into TeamSpeak to find Blamefulgecko hanging out in the lobby. I warned him that I was going to start streaming some Final Fantasy XIV, shop and that any conversations we might have would end up being broadcast to the world (and by world I mean myself, as my monitoring of the channel was the only registered viewer).
Turns out my voice was just fine on the recording, but Blame’s was almost inaudible. Technically, this was a “good thing”, as it kind of means that I can be in a channel with someone and they can yell all they want and they won’t be heard in the stream. But on another hand, it might be cool to hear what other people are talking about. Come for the game, stay for the colorful commentary, as it were.
This was a dark path to turn to, because it involves installing…virtual audio cables. Let’s discuss.
What the F**k is a Virtual Audio Cable?
It’s what it sounds like: a virtual audio cable. Normally, your sound is routed from it’s source — a game, or TeamSpeak — to a destination — your desktop speakers, or OBS — via Windows Audio or dedicated drivers. The source usually just uses whatever is marked as “default output” in your audio properties, although TS allows you to route output to any qualified device driver. OBS, in turn, can pick up any qualified device driver to receive.
The problem is that you, the user, have very limited control over this. You can pick an output path from one side, and an input path from another, and that’s about it.
A virtual audio cable is just another path, but it allows you to circumvent the usual path. Why, you ask? This will allow you to free up the usual path for other audio, and gives you more control.
The Free And Easy Path Of VoiceMeeter
In looking at VAC’s, I happened across an app called VoiceMeeter. This gem is a virtual mixing board, which turned out to be almost exactly what I wanted.
VM has three inputs, and two outputs. Two of the inputs are physical, like two headsets or a headset and a webcam mic, connected to the same PC. The third input is virtual, which means “software”. This would be your desktop audio player or TeamSpeak. The outputs consist of one physical, like a headset or desktop speakers, and one virtual, which is a source that an app like OBS can use for its input stream.
I mean, that pretty much sums it up right there.
After installing VM, I rebooted all audio using apps. In VM, I set the first physical input to be my Pysko headset mic (aka High Definition Device). I didn’t want a second physical input, so that was blank. The virtual input was set to the ASIO (Audio Stream Input/Output) option, which is just a general sound card driver, and the only option I had.
Next, I set the A channel output to be Creative ASIO, which is kind of a default, and the source of contention which we’ll get to later. I set the B channel to use the Psyko headset.
In TeamSpeak, I set the Playback > Playback Device to use the new VoiceMeeter Input, which tells TS to send it’s output to VM’s virtual channel.
In OBS, I set the Microphone/Auxilary Audio Device to use the VoiceMeeter Output, which tells OBS to receive it’s audio from VM’s virtual channel.
The idea, then, is that TS’s audio — other people — will mix with my headset mic through VM, which outputs the audio through a virtual channel and into OBS’s microphone input channel. Ideally, everyone who talks on TS will have their voices merged with my microphone voice, and that mix will be broadcast to the world.
We Do Not Welcome Your Feedback
The thing is, it worked great! The setup achieved everything that I had hoped to achieve. But there was a slight — yet still annoying — issue.
I like to have my chat audio in the headset, and my game audio through the desktop speakers. I couldn’t achieve this. Now, my own voice was piped through the headset, and the TS audio was piped through the headset and the desktop. When playing a game, that would mix the game audio with voice chat, which is unacceptable.
I believe the issue is with the ASIO driver. From what I can gather, this is a generic driver that is used by many things. When selecting ASIO as a physical output, it outputs to all ASIO-using devices. For me, this is the headset and the desktop system. So when everything is routed to the ASIO output, it’ll ooze out of any ASIO connected device. I’ve found that I can mute my own headset so I don’t have to listen to myself, but I can’t stop the TeamSpeak audio from broadcasting through two devices.
I don’t know if what I’m trying to do here is actually worth the issues. For one, it’s simply to give stream viewers something additional to listen to, which takes the burden off of me to provide a running commentary. On the other hand, it’s not always a given that folks in TS are going to want to be part of the stream. Another alternative, I suppose, is to have one physical mic for TS (the headset), and one physical mic for the stream (a webcam). This would sound strange to viewers of the stream, since they’d hear me responding to people that they can’t hear, but it would provide maximum anonymity for TS users who don’t want to be heard on screen.