I’ve been playing ARC Raiders, and seeing people playing music into their microphone got me to find a way to do that on Linux. Fortunately, it doesn’t take much to set it up, but it took me couple of days to piece that commands together. I wrote a post about it, and I figured people here may find this useful.

TLDR: Bind these scripts to a key

Setup Script

src=alsa_input.usb-Samsung_Samsung_USB_C_Earphones_20160406.1-00.analog-stereo; # Sets the microphone name
pactl load-module module-null-sink sink_name=Combined sink_properties=device.description="Combines-real-mic-with-sound-effects"; # Create a virtual device
pactl load-module module-loopback source=$src sink=Combined; # Make microphone play sound into the virtual device

Toggle Microphone Script

dev=alsa_input.usb-Samsung_Samsung_USB_C_Earphones_20160406.1-00.analog-stereo
vol=$(pactl get-source-volume $dev | grep -o '[0-9]\+%' | head -n1 | tr -d '%')

if [ "$vol" -eq 0 ]; then
    pactl set-source-volume $dev 100%
else
    pactl set-source-volume $dev 0%
fi

Play Sound Script

# Optionally add "pkill paplay" so that sound can never overlap
paplay --device=Combined --volume 30000 <Path to the file you want to play>
# Optionally repeat the same command but without the --device flag so you know what's being played in the microphone

Kill All Sound Being Played

pkill paplay
  • Assassassin@lemmy.dbzer0.com
    link
    fedilink
    English
    arrow-up
    5
    ·
    2 days ago

    Yeah, that’s totally fair, I kinda misunderstood what you were doing my first go around. It’s always neat to see a scripted solution to problems like this, it’s one of the things that keeps me on Linux.