#!/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