Don't call out others in a negative manner. Don't break Twitch’s ToS or Community Guidelines. Don't encourage others to break the subreddit rules. The following line will unload every module from 52 to 56.We encourage folks to use the new Reddit design for the Collections feature that houses our Events & Archives. If things get out of hand, you can always restart by running pactl unload-module (for each module you just made.!For loops.)(bash-for) (If you forgot them, use pactl list modules to find them again.) You can change the input a sink ends up using without issue within pavucontrol, but it won't let you set the output to match what you name as the input here, since it'd theoretically form an immediate feedback loop. Pactl load-module module-loopback sink=Virtual1įor each loopback, name the sink that should be its input, or at least one that isn't what you will make the output. Pactl load-module module-null-sink sink_name=Virtual2 In our example, we used the commands: pactl load-module module-null-sink sink_name=Virtual1 Use pactl load-module to create the virtual sinks and loopbacks. In your design, be sure your virtual sinks and loopbacks are carefully numbered, not named, because when you implement your solution, the pavucontrol gui won't display any of their names, but will order them in the way you created them. In our problem, the fully simplified solution is: Particularly, any virtual sink that has exactly one input and one output, with at most one of them a non-device, is unnecessary. You may be able to simplify your solution by removing some virtual sinks. (Optional) Remove unnecessary virtual sinks. Now that everything in the middle is a device, each arrow in the middle represents a valid loopback, and you have a solution ready to implement. In our problem, we added three virtual sinks: In our problem, we had a microphone and headphone that were both devices:įor each non-device, add a virtual sink to replace it. To check which things are devices, you can find them in pactl list and see if they have any properties named device. Simply circling all your inputs and outputs that are real hardware devices is enough. This means to list vertically all your inputs on the left and your outputs on the right, and then draw arrows between them indicating which should go where. This coincides with the idea of a microphone being an "input device" and a speaker being an "output device". So an "input" will be a stream-producing entity, and an "output" will be a stream-accepting entity.
In this post, I'll talk about everything from the perspective of the inner workings, particularly the loopbacks. A loopback has exactly one input and one output, but a device may have as many loopbacks going in and out of it as desired. To connect two devices together, a loopback must be used. To connect two non-devices together, a virtual sink must be used. Pulseaudio by default connects each non-device to exactly one device. (So this post will have a few of them.) The Terms Devicesĭevices are physical audio hardware like microphones, headphones, and speakers.
#GXP2170 AUDIO LOOPBACK HOW TO#
(So this post will have plenty of them, and how to make them.) We also wanted some well-defined terms. Particularly, we really, really wanted some diagrams. (A diagram is in the first step of The Solution.)Īfter reading over this StackExchange post and messing with various loopback configurations, we were thoroughly confused about what to do and how to do it. So, we want to have the Hangout accept both Eric's microphone and The Dig's audio to send to Joe, while the Hangout's audio and The Dig's audio should go to Eric's headphones. Eric wants to hear what Joe says and the game sounds, while Joe wants to hear what Eric says and the game sounds. The ProblemĮric has the game on his Linux computer. Here's how we got the audio to broadcast from a Linux machine, with extra explanation for the general solution. My brother and I have started playing a point-and-click adventure ( The Dig) together over Google Hangouts.