I am able to play sound through two or more outputs/devices using paprefs and adding a virtual output device, as described in this answer: Play sound through two or more outputs/devices

Now I would like to be able to do the same for the input, so basically to collect the sound input from any of the capable devices available and route it, for example, Skype or Slack. It will be very useful for me in large conference rooms, so that I can distribute multiple speaker/mics around in order to have a good sound quality both ways.

Can anybody suggest a solution?

  • It might be possible in software, but maybe it's also a possibility to look at a pro-level hardware audio mixer (something like this) ? Connect multiple mics to it, and take the output from that to the computer. – JonasCz - Reinstate Monica Jan 6 '17 at 19:05
  • I hear you, but it's quite expensive, we already have few bluetooth speakerphones, and the software definitely can do that. You just need to open the pulseaudio volume control, select input devices, you can immediately see that all the microphones are on and are receiving. Thanks for the suggestion tough! – Bruno Bossola Jan 9 '17 at 10:45

so basically I figured this out myself after a lot of digging on the internet. This is the best answer I found, in another forum, at http://www.pclinuxos.com/forum/index.php/topic,119695.msg905379.html#msg905379

Basically, you will need first to add a fake channel, a "null sink", where the inputs will be collected. We will call it "inputs" and we will create it using this command:

pactl load-module module-null-sink sink_name=inputs

After that, you will need to create as many virtual channels you need for the devices you need to connect, linking that to the "inputs" channel you created before. So please repeat this command for any input you want to mix (and add one if you want to mix also the input of your laptop):

pactl load-module module-loopback sink=inputs

Now you will have to connect this new "loopback" channels to the device you intend to record from. You can do this using "pavucontrol" (install it if missing), open the "Recording" tab, select "Virtual Streams" from the bottom selector and then make sure you connect a different input to each different loopback.

At this point it's just a matter of using your input in your application for recording, and you're all set! Please remember to setup also the output as described in my original question :)

I am happy to receive any better answer too, as this procedure (even if it can be automated) it's still too much error prone and does not automatically includes new devices added later (you will have to setup a new channel and add them again).

| improve this answer | |
  • 1
    "So please repeat this command for any input you want to mix". Would you please provide an example how to change the command for other inputs? – Mark May 24 at 10:30

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.