Skip to content

Instantly share code, notes, and snippets.

@luqmana
Created November 22, 2020 03:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save luqmana/6b566fb075483aa8beedbc5b27b7bb64 to your computer and use it in GitHub Desktop.
Save luqmana/6b566fb075483aa8beedbc5b27b7bb64 to your computer and use it in GitHub Desktop.
#!/bin/bash
if [ "$1" == "cleanup" ]; then
pactl unload-module module-loopback
pactl unload-module module-null-sink
pactl unload-module module-echo-cancel
exit
fi
# Unload and reload the echo cancel to make sure it is setup properly
pactl unload-module module-echo-cancel &> /dev/null
#pactl load-module module-echo-cancel use_master_format=1 aec_method=webrtc aec_args=\""analog_gain_control=0 digital_gain_control=1"\" source_name=EchoCancelledSource sink_name=EchoCancelledSink sink_master=alsa_output.usb-C-Media_Electronics_Inc._USB_PnP_Sound_Device-00.analog-stereo source_master=alsa_input.usb-C-Media_Electronics_Inc._USB_PnP_Sound_Device-00.mono-fallback
pacmd load-module module-echo-cancel use_master_format=1 aec_method=webrtc source_name=EchoCancelledSource sink_name=EchoCancelledSink sink_master=alsa_output.usb-C-Media_Electronics_Inc._USB_PnP_Sound_Device-00.analog-stereo source_master=alsa_input.usb-C-Media_Electronics_Inc._USB_PnP_Sound_Device-00.mono-fallback
# Make the Echo cancelled ones default source & sink
pactl set-default-source EchoCancelledSource
pactl set-default-sink EchoCancelledSink
# Create virtual Sink for audio that will be captured in addition to mic
pacmd load-module module-null-sink sink_name=CapturedAudio sink_properties=device.description=CapturedAudio
# Create virtual sink for combined CapturedAudio and Mic
pacmd load-module module-null-sink sink_name=CombinedAudio sink_properties=device.description=CombinedAudio
# Use loopback to feed the mic audio & CapturedAudio's monitor into the CombinedAudio sink
#pacmd load-module module-loopback source=alsa_input.usb-C-Media_Electronics_Inc._USB_PnP_Sound_Device-00.mono-fallback sink=CombinedAudio
pacmd load-module module-loopback source=EchoCancelledSource sink=CombinedAudio latency_msec=1
pacmd load-module module-loopback source=CapturedAudio.monitor sink=CombinedAudio latency_msec=1
# Use loopback to also feed the CapturedAudio back to the speaker so I can hear it
#pacmd load-module module-loopback source=CapturedAudio.monitor sink=alsa_output.usb-C-Media_Electronics_Inc._USB_PnP_Sound_Device-00.analog-stereo
pacmd load-module module-loopback source=CapturedAudio.monitor sink=EchoCancelledSink latency_msec=1
# Now make the CombinedAudio monitor the default input
pactl set-default-source CombinedAudio.monitor
# Now for any application you want to be included in CombinedAudio.monitor source, set it to use the CapturedAudio sink
# with pavucontrol or otherwise
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment