108 lines
3.0 KiB
Bash
Executable File
108 lines
3.0 KiB
Bash
Executable File
#!/bin/bash
|
|
# Script to bridge/start pulseaudio into loopback mode
|
|
|
|
INSTALL_PREFIX="X-PREFIX-X"
|
|
|
|
# ----------------------------------------------
|
|
|
|
if [ ! -d ~/.pulse ]; then
|
|
mkdir -p ~/.pulse
|
|
fi
|
|
|
|
if [ ! -f ~/.pulse/client.conf ]; then
|
|
echo "autospawn = no" > ~/.pulse/client.conf
|
|
else
|
|
if (! cat ~/.pulse/client.conf | grep "autospawn = no" > /dev/null); then
|
|
sed -i '/autospawn =/d' ~/.pulse/client.conf
|
|
echo "autospawn = no" >> ~/.pulse/client.conf
|
|
fi
|
|
fi
|
|
|
|
if [ ! -f ~/.pulse/daemon.conf ]; then
|
|
echo "default-sample-format = float32le" > ~/.pulse/daemon.conf
|
|
echo "realtime-scheduling = yes" >> ~/.pulse/daemon.conf
|
|
echo "rlimit-rttime = -1" >> ~/.pulse/daemon.conf
|
|
echo "exit-idle-time = -1" >> ~/.pulse/daemon.conf
|
|
else
|
|
if (! cat ~/.pulse/daemon.conf | grep "default-sample-format = float32le" > /dev/null); then
|
|
sed -i '/default-sample-format = /d' ~/.pulse/daemon.conf
|
|
echo "default-sample-format = float32le" >> ~/.pulse/daemon.conf
|
|
fi
|
|
if (! cat ~/.pulse/daemon.conf | grep "realtime-scheduling = yes" > /dev/null); then
|
|
sed -i '/realtime-scheduling = /d' ~/.pulse/daemon.conf
|
|
echo "realtime-scheduling = yes" >> ~/.pulse/daemon.conf
|
|
fi
|
|
if (! cat ~/.pulse/daemon.conf | grep "rlimit-rttime = -1" > /dev/null); then
|
|
sed -i '/rlimit-rttime =/d' ~/.pulse/daemon.conf
|
|
echo "rlimit-rttime = -1" >> ~/.pulse/daemon.conf
|
|
fi
|
|
if (! cat ~/.pulse/daemon.conf | grep "exit-idle-time = -1" > /dev/null); then
|
|
sed -i '/exit-idle-time =/d' ~/.pulse/daemon.conf
|
|
echo "exit-idle-time = -1" >> ~/.pulse/daemon.conf
|
|
fi
|
|
fi
|
|
|
|
# ----------------------------------------------
|
|
|
|
case $1 in
|
|
-h|--h|--help)
|
|
echo "usage: $0 [command]
|
|
|
|
-p, --play Playback mode only
|
|
|
|
-h, --help Show this help menu
|
|
--dummy Don't do anything, just create the needed files
|
|
|
|
NOTE:
|
|
When runned with no arguments, pulse2jack will
|
|
activate PulseAudio with both playback and record modes.
|
|
"
|
|
exit
|
|
;;
|
|
|
|
--dummy)
|
|
exit
|
|
;;
|
|
|
|
-p|--p|--play)
|
|
FILE=$INSTALL_PREFIX/share/cadence/pulse2loopback/play.pa
|
|
;;
|
|
|
|
*)
|
|
FILE=$INSTALL_PREFIX/share/cadence/pulse2loopback/play+rec.pa
|
|
;;
|
|
esac
|
|
|
|
# ----------------------------------------------
|
|
|
|
IsPulseAudioRunning()
|
|
{
|
|
PROCESS=`ps -u $USER | grep pulseaudio`
|
|
if [ "$PROCESS" == "" ]; then
|
|
false
|
|
else
|
|
true
|
|
fi
|
|
}
|
|
|
|
if (IsPulseAudioRunning); then
|
|
{
|
|
echo "PulseAudio is already running, make sure it outputs to Loopback"
|
|
|
|
pactl load-module module-alsa-source source_name=input_loopback device=hw:Loopback > /dev/null
|
|
pactl load-module module-alsa-sink sink_name=output_loopback device=hw:Loopback > /dev/null
|
|
pacmd set-default-source input_loopback > /dev/null
|
|
pacmd set-default-sink output_loopback > /dev/null
|
|
|
|
echo "Done"
|
|
}
|
|
else
|
|
{
|
|
if (`pulseaudio --daemonize --high-priority --realtime --exit-idle-time=-1 --file=$FILE -n`); then
|
|
echo "Initiated PulseAudio successfully!"
|
|
else
|
|
echo "Failed to initialize PulseAudio!"
|
|
fi
|
|
}
|
|
fi
|