studio/bin/pulse_jack_autoconnect

42 lines
1.0 KiB
Bash
Executable File

#!/bin/bash
declare -A ports
ports[pulsel]='PulseAudio JACK Sink:front-left'
ports[pulser]='PulseAudio JACK Sink:front-right'
ports[echo_audiofire1]='firewire_pcm:001486a296a59815_Unknown_out'
ports[echo_audiofire2]='firewire_pcm:001486a296a59815_Unknown0_out'
retries=10
err_file="$(mktemp)"
while [[ "$retries" -gt 0 ]]; do
failed=false
live_ports="$(jack_lsp -c 2>"$err_file")"
printf 'live ports:\n\n%s\n' "$live_ports"
err="$(<"$err_file")"
rm "$err_file"
if [[ -n "$err" ]]; then
printf '%s\n' "$err" >&2
sleep 2
((retries-=1))
continue
fi
for port in "${ports[@]}"; do
if ! grep -q "$port" <<< "$live_ports"; then
printf '%s not seen\n' "$port" >&2
sleep 2
((retries-=1))
failed=true
fi
done
if [[ "$failed" == 'false' ]]; then
break
fi
done
jack_connect "${ports[pulsel]}" "${ports[echo_audiofire1]}"
jack_connect "${ports[pulser]}" "${ports[echo_audiofire2]}"
printf 'success\n'
if [[ "$retries" != 10 ]]; then
printf 'attempts: %s\n' "$((10-retries))"
fi