Humaid AlQassimi

< Go back

How to Loopback Application Sound as an Input Source with PulseAudio

May 3, 2021 · 2 min read

This guide will show you how to loopback your computer’s application sound as a source in your meeting or calling software. There is probably a way to automate or make this setup permanent, which is something I’d like to later figure out.

We’ll first make a sink, we’ll name sink_mix. This sink would mix mic and application sound. This is done by loading the module-null-sink, with some arguments (providing the name and properties).

pactl load-module module-null-sink sink_name=sink_mix sink_properties=device.description=sink_mix

We’ll then loopback the mic sound into this new sink, this is done using the module-loopback. We first need to find the source of the microphone, you can list sources with:

pactl list sources

If you’d like to know what are the difference between sinks, sources, etc. I recommend you check out Victor’s post regarding PulseAudio under the hood.

After finding the name, in my case, this is “alsa_input.usb-BLUE_MICROPHONE_Blue_Snowball_797_2020_07_29_83297-00.mono-fallback”. In the next command, replace <source> with the name of your source.

pactl load-module module-loopback latency_msec=60 adjust_time=6 source=<source> sink=sink_mix

Using PulseAudio Volume Control (pavucontrol), we can see we can now set the playback of specific applications to sink_mix instead of your default output source. You can also under recording, set your source to “Monitor of sink_mix”.

The issue now is that you are not able to listen to the playback, as it is only sent to sink_mix, which you cannot hear without listening to yourself.

To solve this, we can use module-combine-sink, which allows us to direct any output of this sink to multiple sinks (defined as “slaves”).

We first have to find the name of your output (speakers) sink, this can be done with:

pactl list sinks

In my case, this was “alsa_output.pci-0000_00_1f.3.analog-stereo”, and was listed as the first sink in the list. But this might vary depending on your setup.

In the next command, replace <speaker> with the name of your output sink.

pactl load-module module-combine-sink slaves=<speaker>,sink_mix

When directing the playback of an application, make sure to select “Simultaneous output to …, sink_mix”. Where the ellipsis would match your speaker.

If you have any suggestions, please let me know in the mailing list below!

Would like to comment on the blog post? Feel free to start a discussion on my public general mailing list.

Articles from blogs I follow around the net

You can also read my newsfeed.

Cryptocurrency is an abject disaster

This post is long overdue. Let’s get it over with. 🛑 Hey! If you write a comment about this article online, disclose your stake in cryptocurrency. I will explain why later in this post. For my part, I held <$10,000 USD worth of Bitcoin prior to 201…

via Drew DeVault's blog April 26, 2021

Recommended read: Why Lichess will always be free

Signal-boosting this excellent article from Lichess: Why Lichess will always be free.

via Drew DeVault's blog April 23, 2021

Stallman isn't great, but not the devil

So Richard Stallman is back at the FSF, on the board of directors this time rather than as President. I’m not sure how significant this position is in the day-to-day operations, but I’m not sure if that’s really important. How anyone could have thought this …

via March 25, 2021

Generated by openring