#!/usr/bin/env sh

start_audio_jack () {
    wait-for-service --user "puseaudio.socket"

    systemctl --user stop pulseaudio.service
    systemctl --user stop pulseaudio.socket

    sleep 1
    jack_control ds alsa
    jack_control dps device hw:U192k
    jack_control dps rate 48000
    jack_control dps nperiods 4
    jack_control dps period 256
    jack_control start

    sleep 1
    systemctl --user start pulseaudio

    sleep 1
    alsa_out -d hw:PCH -j "Speaker" -c 2 &
    #alsa_out -d "hdmi:CARD=HDMI,DEV=5" -j "Speaker" -c 2 &

    sleep 1
    jack_connect "PulseAudio JACK Sink":front-left Speaker:playback_1
    jack_connect "PulseAudio JACK Sink":front-right Speaker:playback_2

    if [ -x "$(command -v jack-matchmaker)" ]
    then
        jack-matchmaker -e \
            Mopidy:out_jackaudiosink0_1 Speaker:playback_1 \
            Mopidy:out_jackaudiosink0_2 Speaker:playback_2 &
    fi

    sleep 3
}


start_audio_pipewire () {
    wait-for-service --user "pipewire.service"
    wait-for-service --user "wireplumber.service"

    sleep 1

    pw-link 'default-sink:monitor_FL' 'alsa_output.usb-BEHRINGER_UMC202HD_192k-00.HiFi__hw_U192k__sink:playback_FL'
    pw-link 'default-sink:monitor_FR' 'alsa_output.usb-BEHRINGER_UMC202HD_192k-00.HiFi__hw_U192k__sink:playback_FR'

    pw-link 'default-sink:monitor_FL' 'alsa_output.pci-0000_00_1f.3.analog-stereo:playback_FL'
    pw-link 'default-sink:monitor_FR' 'alsa_output.pci-0000_00_1f.3.analog-stereo:playback_FR'

	#pw-link 'output.UMC_Amp:capture_MONO' 'default-sink:playback_FL'
	#pw-link 'output.UMC_Amp:capture_MONO' 'default-sink:playback_FR'
}


case $1 in
    jack)        start_audio_jack ;;
    pipewire)    start_audio_pipewire ;;
    *)           echo "'$1' is not valid" ;;
esac