Skip to content

Instantly share code, notes, and snippets.

@phillhocking
Created December 24, 2021 04:37
Show Gist options
  • Save phillhocking/2700d3e69852433b1df37764a18daf96 to your computer and use it in GitHub Desktop.
Save phillhocking/2700d3e69852433b1df37764a18daf96 to your computer and use it in GitHub Desktop.
Pulse/Jack/Carla Automation Script (Assumes Audiobox USB96 but if you are dumb enough to be trying this figure out yourself with pulsectl)
#!/bin/bash
# Start Jack daemon
jack_control start
# Jack -> Pulse return
PAM1=$(pactl load-module module-jack-source source_name=pulse_return client_name=pulse_return connect=false)
# Pulse return source -> Sink loopback
PAM2=$(pactl load-module module-loopback sink=alsa_output.usb-PreSonus_AudioBox_USB_96_000000000000-00.analog-stereo source=pulse_return source_dont_move=true sink_dont_move=true)
# Jack sink for Virtual Microphone
# Pulse sink -> Jack (no fx, just passthrough)
PAM3=$(pactl load-module module-jack-sink sink_name=pulse_send_virtual_microphone client_name=pulse_send_virtual_microphone connect=false)
# Pulse echo cancel (Virtual Microphone -> Mix for Virtual Microphone)
PAM4=$(pactl load-module module-echo-cancel use_master_format=1 sink_name=virtual_microphone source_name=virtual_microphone aec_method=webrtc aec_args="analog_gain_control=0\\ digital_gain_control=1\\ experimental_agc=1\\ noise_suppression=1\\ voice_detection=1\\ extended_filter=1" \ source_properties=device.description=Virtual-Microphone sink_properties=device.description=Virtual-Microphone)
# Pulse echo cancel -> Pulse send to Jack
PAM5=$(pactl load-module module-loopback source=virtual_microphone sink=pulse_send_virtual_microphone)
pacmd set-default-source virtual_microphone
if [ $# -eq 1 ]; then
nice -n -11 carla ~/carla_patches/$1.carxp
else
carla ~/carla_patches/launchjack.carxp
fi
pacmd set-default-source alsa_input.usb-PreSonus_AudioBox_USB_96_000000000000-00.analog-stereo
pactl unload-module $PAM5
pactl unload-module $PAM4
pactl unload-module $PAM3
pactl unload-module $PAM2
pactl unload-module $PAM1
jack_control stop
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment