3

I happen to record a meeting using SimpleScreenRecorder (SSR) on Linux.

I use Pulseaudio and default configurations.

When SSR records the screen and audio, it records the speakers output, but not my microphone. I know that I can create a loopback using pactl load-module module-loopback latency_msec=1 so that the mic goes to the speakers and SSR can record both, but that creates feedback and Larsen effect when not using earphones.

Apparently I cannot ask SSR to record from two audio sources at once. Is there a way to create a virtual Pulseaudio source where the speakers and mic both go, so that I can then instruct SSR to record from that virtual source?

As I read up at Mix application and microphone into one input, I can create a virtual speaker to which I can route both the mic and the speakers, and from which SSR can read. However, I still want the mic and speaker to function normally while I have the meeting, and i am not sure that solution would do that, so I need someone with Pulseaudio experience here.

If I find no simple way, I'll switch from SSR to OBS...

1 Answers1

4

If you want to record both microphone and speakers output then create virtual speaker and two loopback modules: one which mirrors microphone to virtual speaker and the second one which mirrors your speakers. Then just choose to record monitor of that virtual speaker inside ssr.

Commands:

pactl load-module module-null-sink sink_name=both sink_properties=device.description=Both-mic-and-speakers
pactl load-module module-loopback source=alsa_output.pci-0000_00_1f.3.analog-stereo.monitor sink=both
pactl load-module module-loopback sink=both

Just make sure to replace alsa_output.pci-0000_00_1f.3.analog-stereo with name of your speakers, you can get one using pactl list sinks short.

This solution has drawbacks however:

  • it records sound from all your applications
  • your system volume affects the recording's volume (so, if you have volume set to 20% the recording will be quite quiet), compare that with your voice which is affected by your mic's volume (probably 100%)
  • There'll be echo in the recording if you don't use headphones

You can mitigate first two issues by using more complex script (which I use to record single application):

pactl load-module module-null-sink sink_name=fake_speakers sink_properties=device.description=Virtual-speakers
pactl load-module module-remap-source source_name=fake_mic master=fake_speakers.monitor source_properties=device.description=Virtual-mic
pactl load-module module-null-sink sink_name=fake_speakers2 sink_properties=device.description=Second-virtual-speakers
pactl load-module module-loopback source_dont_move=true sink_dont_move=true sink=fake_speakers2 source=fake_speakers.monitor
pactl load-module module-loopback sink_dont_move=true sink=fake_speakers2
pactl load-module module-remap-source source_name=fake_mic2 master=fake_speakers2.monitor source_properties=device.description=Second-virtual-mic
pactl load-module module-loopback source_dont_move=true source=fake_speakers.monitor

Then set application's sink to be Virtual Speakers. And then set SSR audio source to be Second-Virtual-mic. You will still hear application, but SSR will record only selected apps and your voice and everything has 100% volume by default and is to your control. If you encounter sound delay try adding latency_msec parameter to loopbacks.

jakweg
  • 61
  • 1
  • Thank you, jakweg, I have not yet tried your solution but now I do wonder: does it make sense doing that as a normal user-oriented task? If I need doing that when using SSR, probably I should be using OBS instead, am I right? – Francesco Potortì Dec 16 '21 at 19:22