Piping other application audio into your microphone!
This is very Informal, just a bunch of useful commands and scripts. I will add some structure later. (Once I get this all figured out) Ubuntu 18.04 Bionic
Advanced Linux Sound Architecture (ALSA) is a software framework and part of the Linux kernel that provides an application programming interface (API) for sound card device drivers.
Tools:
alsamixer
arecord -r 41000 -d 900 test.wav
aplay test.wav
PulseAudio is a network-capable sound server program distributed via the freedesktop.org project. In broad terms ALSA is the sound hardware driver and PulseAudio is the interface engine between Applications and ALSA. It is the default sound server in Ubuntu and Arch Linux.
pacmd
pactl
pacmd
pulseaudio -k
pacmd list-sources |grep name:
name:
of your microphonepacmd list-sinks |grep name:
name:
of your speakers/headphonesFunctional PulseAuido Bash Script:
#!/bin/bash # Kill pulseaudio pulseaudio -k # Kill OpenVpn sudo service openvpn stop # Declare your microphone and speakers MICROPHONE="alsa_input.usb-Apple_Inc._Display_Audio_30D6B202-00.analog-mono" #SPEAKERS="alsa_output.usb-Apple_Inc._Display_Audio_30D6B202-00.analog-stereo" SPEAKERS="alsa_output.pci-0000_00_1b.0.analog-stereo" # Create the virtual sinks pactl load-module module-null-sink sink_name=vsink_capture sink_properties=device.description="vsink_capture" pactl load-module module-null-sink sink_name=vsink_fx sink_properties=device.description="vsink_fx" pactl load-module module-null-sink sink_name=vsink_fx_mic sink_properties=device.description="vsink_fx_mic" pactl load-module module-null-sink sink_name=vsink_fx_to_spk sink_properties=device.description="vsink_fx_to_spk" #pactl set-sink-volume vsink_fx_to_spk '40%' # Create a combination virtual sink pactl load-module module-combine-sink sink_name=capture_combined slaves=vsink_capture,vsink_fx_to_spk # Create the loopbacks pactl load-module module-loopback sink=vsink_fx_mic source="$MICROPHONE" pactl load-module module-loopback sink=vsink_fx_mic source=vsink_fx.monitor pactl load-module module-loopback sink=vsink_fx_to_spk source=vsink_fx.monitor pactl load-module module-loopback sink="$SPEAKERS" source=vsink_fx_to_spk.monitor # Open pavucontrol pavucontrol
DIAGRAM:
+-------------+ +-------------+ | Recording | | Video Chat | | Application | | Application | +------^------+ | Playback | | +-----+-------+ | | | | +------+--------+ +------v-----------+ | | | | | vsink_capture <------+ capture_combined | | | | | +---------------+ +------+-----------+ | | | +--------v----------+ | | +---------------------+ | vsink_fx_to_spk +---> Speakers/Headphones | | | +---------------------+ +-------^-----------+ | | +-------------+ +------------+ +-------+----------+ +-------------+ | Music | | | | | | Video Chat | | Application +-----> vsink_fx +------> vsink_fx_mic +----> Application | | Playback | | | | | | Recording | +-------------+ +------------+ +-------^----------+ +-------------+ | | +-----+------+ | Microphone | +------------+