How can I share my system sound and my microphone voice at the same time?

So, basically, I want to share my voice trough my microphone and my system sound at the same time when I’m recording something in Simple Screen Recorder, or when I’m sharing my screen in discord, things like that… how can I do that? ps: still a newbie on linux

inxi -Fxz
System:
  Kernel: 5.11.6-1-MANJARO x86_64 bits: 64 compiler: gcc v: 10.2.0 
  Desktop: GNOME 3.38.4 Distro: Manjaro Linux base: Arch Linux 
Machine:
  Type: Desktop Mobo: ASUSTeK model: PRIME B450M-GAMING/BR v: Rev X.0x 
  serial: <filter> UEFI: American Megatrends v: 2006 date: 11/13/2019 
CPU:
  Info: 6-Core model: AMD Ryzen 5 2600 bits: 64 type: MT MCP arch: Zen+ 
  rev: 2 cache: L2: 3 MiB 
  flags: avx avx2 lm nx pae sse sse2 sse3 sse4_1 sse4_2 sse4a ssse3 svm 
  bogomips: 81468 
  Speed: 1514 MHz min/max: 1550/3400 MHz boost: enabled Core speeds (MHz): 
  1: 1514 2: 1319 3: 2787 4: 1907 5: 1450 6: 1373 7: 1776 8: 3313 9: 2264 
  10: 1493 11: 1392 12: 1269 
Graphics:
  Device-1: AMD Ellesmere [Radeon RX 470/480/570/570X/580/580X/590] 
  vendor: XFX Pine driver: amdgpu v: kernel bus-ID: 08:00.0 
  Display: x11 server: X.Org 1.20.10 driver: loaded: amdgpu,ati 
  unloaded: modesetting resolution: 1920x1080~70Hz 
  OpenGL: renderer: Radeon RX 570 Series (POLARIS10 DRM 3.40.0 
  5.11.6-1-MANJARO LLVM 11.1.0) 
  v: 4.6 Mesa 20.3.4 direct render: Yes 
Audio:
  Device-1: AMD Ellesmere HDMI Audio [Radeon RX 470/480 / 570/580/590] 
  vendor: XFX Pine driver: snd_hda_intel v: kernel bus-ID: 08:00.1 
  Device-2: AMD Family 17h HD Audio vendor: ASUSTeK driver: snd_hda_intel 
  v: kernel bus-ID: 0a:00.3 
  Sound Server-1: ALSA v: k5.11.6-1-MANJARO running: yes 
  Sound Server-2: JACK v: 0.125.0 running: no 
  Sound Server-3: PulseAudio v: 14.2 running: yes 
  Sound Server-4: PipeWire v: 0.3.23 running: yes 
Network:
  Device-1: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet 
  vendor: ASUSTeK driver: r8169 v: kernel port: f000 bus-ID: 07:00.0 
  IF: enp7s0 state: up speed: 100 Mbps duplex: full mac: <filter> 
Drives:
  Local Storage: total: 447.13 GiB used: 42.76 GiB (9.6%) 
  ID-1: /dev/sda vendor: Kingston model: SA400S37480G size: 447.13 GiB 
Partition:
  ID-1: / size: 48.97 GiB used: 15.44 GiB (31.5%) fs: ext4 dev: /dev/sda2 
  ID-2: /boot/efi size: 269.5 MiB used: 312 KiB (0.1%) fs: vfat 
  dev: /dev/sda1 
  ID-3: /home size: 389.64 GiB used: 27.32 GiB (7.0%) fs: ext4 
  dev: /dev/sda3 
Swap:
  ID-1: swap-1 type: file size: 1024 MiB used: 0 KiB (0.0%) file: /swapfile1 
Sensors:
  System Temperatures: cpu: 47.1 C mobo: N/A gpu: amdgpu temp: 56.0 C 
  Fan Speeds (RPM): N/A gpu: amdgpu fan: 1231 
Info:
  Processes: 315 Uptime: 12h 09m Memory: 15.62 GiB used: 3.47 GiB (22.2%) 
  Init: systemd Compilers: gcc: 10.2.0 clang: 11.1.0 Packages: 1204 
  Shell: Zsh v: 5.8 inxi: 3.3.03

Hello @denielt :wink:

For a newbe it is not an easy to do, but doable. These functions are only available through the terminal:

Sharing the mic can be done like this:

export virtual0="virtual_speaker"
export virtual1="virtual_mic"

pactl load-module \
module-null-sink \
sink_name="$virtual0" \
sink_properties=device.description="$virtual0"

pactl load-module \
module-remap-source \
master="$virtual0.monitor" \
source_name="$virtual1" \
source_properties=device.description="$virtual1"

unload with

pactl unload-module module-remap-source
pactl unload-module module-null-sink

Just choose in pavucontrol under Recording at “Remapped Stream” the hardware source. You can have a virtual mic for each application :slight_smile:

But keep in mind… this is only temporary. After reboot or restarting pulseaudio it is gone.

For system sound it is similar:

export virtual0="virtual_speaker"

pactl load-module \
module-null-sink \
sink_name="$virtual0" \
source_properties=device.description="$virtual0"

pactl load-module \
module-loopback \
source="$virtual0.monitor" \
sink="$virtual0"

Now open pavucontrol and choose which application under “Playback” should be redirected to virtual_speaker.

Unload it with:

pactl unload-module module-loopback
pactl unload-module module-null-sink

This is the way, i do it. Theses functions are only available through the terminal.

2 Likes

This topic was automatically closed 15 days after the last reply. New replies are no longer allowed.