Someone should write a small book on this. I bet it would sell. Joe On 5/16/20 1:23 AM, Sean Greenslade wrote: > On Fri, May 15, 2020 at 11:04:00PM -0400, Samir Parikh wrote: >> Hello, >> >> I am trying to combine the audio from my microphone (either built in >> microphone from my laptop or bluetooth headset) with music playing >> from Rhythmbox Music Player running on Ubuntu 16.04 and pipe that as >> the audio input to video conference services such as Jitsi. >> >> I don't know much about Linux audio internals and wasn't sure how to >> do this. Can I do this completely via the operating system using >> Pulse Audio? Do I need to do something with Jack? Or do I need >> specialized software such as OBS, Ardour or Reaper? >> >> Any help or suggestions on pointing me in the right direction or how >> to get started would be greatly appreciated. I'm hoping that I can do >> this completely through software without external hardware such as a >> mixer or something. > This is definitely possible entirely within pulseaudio. I'll go over the > basic concepts here, then show an example. > > Pulse has two types of sound devices, sources and sinks. Sources are > input devices like microphones. Sinks are output devices like speaker or > headphone ports. Programs that work with sound can attach to sources in > order to pull sound in, and can attach to sinks to output sound. I > suggest playing around with the "pavucontrol" utility to see what > sources and sinks are present on your machine. It also shows what > applications are recording or playing back audio, and allows you to > redirect existing audio streams on the fly. It's quite handy. > > Within pavucontrol, there is a separation between sources and sinks, and > the two cannot directly be mixed. In order to mix a music sink and a > microphone source, we'll use a few manually-loaded pulseaduio modules. > Note that this can easily be scripted once you find the set of commands > that work well for your setup. > > We'll first need to create a "virtual mixer" device. This will receive > both the music and the voice streams and mix them together. Run the > following commands: > > $ pacmd load-module module-null-sink sink_name=virt_mix > $ pacmd update-sink-proplist virt_mix device.description=VirtualMixer > > Pavucontrol should now list "VirtualMixer" in the Output Devices tab. > > Next, you'll need a loopback device to feed your microphone's sound to > this virtual mixer. Run this command: > > $ pacmd load-module module-loopback sink=virt_mix > > In pavucontrol, go to the Recording tab and change the Show dropdown to > All Streams. There should be an entry titled "Loopback to VirtualMixer" > with a dropdown to select the loop input. Pick the appropriate input > that corresponds to your microphone. > > Now you can begin playing music, and in the Playback tab of pavucontrol > move the music playback to the VirtualMixer. > > Finally, begin recording / using your conferenece application. In the > Recording tab of pavucontrol, find the entry for the recording > application / conference application. Change its microphone to "Monitor > of Null Output", which is the virtual source that pulls from the > virt_mix sink. Verify that it is behaving the way you want. > > Hopefully this isn't too confusing. Feel free to ask for clarification > if needed. I've set up a number of complex audio workflows in linux, > some of which took a lot of experimentation to get working well. > > --Sean > > _______________________________________________ > pulseaudio-discuss mailing list > pulseaudio-discuss@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss _______________________________________________ pulseaudio-discuss mailing list pulseaudio-discuss@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/pulseaudio-discuss