| @@ -0,0 +1,107 @@ | |||||
| #!/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 --disallow-module-loading --exit-idle-time=-1 --file=$FILE -n`); then | |||||
| echo "Initiated PulseAudio successfully!" | |||||
| else | |||||
| echo "Failed to initialize PulseAudio!" | |||||
| fi | |||||
| } | |||||
| fi | |||||
| @@ -0,0 +1,46 @@ | |||||
| #!/usr/bin/pulseaudio -nF | |||||
| # | |||||
| # This file is part of PulseAudio, tuned to work for JACK input/output | |||||
| # | |||||
| # PulseAudio is free software; you can redistribute it and/or modify it | |||||
| # under the terms of the GNU Lesser General Public License as published by | |||||
| # the Free Software Foundation; either version 2 of the License, or | |||||
| # (at your option) any later version. | |||||
| # | |||||
| # PulseAudio is distributed in the hope that it will be useful, but | |||||
| # WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||||
| # General Public License for more details. | |||||
| # | |||||
| # You should have received a copy of the GNU Lesser General Public License | |||||
| # along with PulseAudio; if not, write to the Free Software Foundation, | |||||
| # Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. | |||||
| # This startup script is used only if PulseAudio is started per-user | |||||
| # (i.e. not in system mode) | |||||
| .fail | |||||
| ### Automatically restore the volume of streams and devices | |||||
| load-module module-device-restore | |||||
| load-module module-stream-restore | |||||
| load-module module-card-restore | |||||
| ### Load unix protocol | |||||
| load-module module-native-protocol-unix | |||||
| ### Automatically move streams to the default sink if the sink they are | |||||
| ### connected to dies, similar for sources | |||||
| load-module module-rescue-streams | |||||
| ### Make sure we always have a sink around, even if it is a null sink. | |||||
| load-module module-always-sink | |||||
| ### Load ALSA modules and set them to Loopback | |||||
| load-module module-alsa-source source_name=input device=hw:Loopback | |||||
| load-module module-alsa-sink sink_name=output device=hw:Loopback | |||||
| ### Set as default source and sink | |||||
| set-default-source input | |||||
| set-default-sink output | |||||
| @@ -0,0 +1,44 @@ | |||||
| #!/usr/bin/pulseaudio -nF | |||||
| # | |||||
| # This file is part of PulseAudio, tuned to work for JACK input/output | |||||
| # | |||||
| # PulseAudio is free software; you can redistribute it and/or modify it | |||||
| # under the terms of the GNU Lesser General Public License as published by | |||||
| # the Free Software Foundation; either version 2 of the License, or | |||||
| # (at your option) any later version. | |||||
| # | |||||
| # PulseAudio is distributed in the hope that it will be useful, but | |||||
| # WITHOUT ANY WARRANTY; without even the implied warranty of | |||||
| # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||||
| # General Public License for more details. | |||||
| # | |||||
| # You should have received a copy of the GNU Lesser General Public License | |||||
| # along with PulseAudio; if not, write to the Free Software Foundation, | |||||
| # Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. | |||||
| # This startup script is used only if PulseAudio is started per-user | |||||
| # (i.e. not in system mode) | |||||
| .fail | |||||
| ### Automatically restore the volume of streams and devices | |||||
| load-module module-device-restore | |||||
| load-module module-stream-restore | |||||
| load-module module-card-restore | |||||
| ### Load unix protocol | |||||
| load-module module-native-protocol-unix | |||||
| ### Automatically move streams to the default sink if the sink they are | |||||
| ### connected to dies, similar for sources | |||||
| load-module module-rescue-streams | |||||
| ### Make sure we always have a sink around, even if it is a null sink. | |||||
| load-module module-always-sink | |||||
| ### Load ALSA modules and set them to Loopback | |||||
| load-module module-alsa-sink sink_name=output device=hw:Loopback | |||||
| ### Set as default sink | |||||
| set-default-sink output | |||||