rendered paste body#!/bin/bash
# Variables
#-------------------------------------------------------------------#
PULSECONF=/home/`whoami`/jackd.pa
RACKFILE=/home/`whoami`/array.rack
JACKFILE=/home/`whoami`/jackd.jack
JACKSET=`cat $JACKFILE`
LOGDIR=/home/`whoami`/logs/jack
JACKLOG=/home/`whoami`/logs/jack/jack.log
TRANS=/home/`whoami`/logs/jack/transport
STATS=/home/`whoami`/logs/jack/stats
rm -rf $LOGDIR/* && sleep 1 && echo "Stopped" > $LOGDIR/status && echo "N/A" > $LOGDIR/dsp_input && echo "N/A" > $LOGDIR/jack_input
# kill pulseaudio
pulseaudio --kill && sleep 1
# Wait for OK
#-------------------------------------------------------------------#
TITLE="JACK"
TEXT="Start the sound system?"
if zenity --question --title="$TITLE" --text "$TEXT"; then
zenity --info --text="Starting..."
echo "JACKLOADER: Initializing..." > $JACKLOG
else
zenity --info --text="Cancelled."
echo "Stopped" > $LOGDIR/status
exit
fi
# Check for configuration files
#-------------------------------------------------------------------#
if [ -s $PULSECONF ]; then
echo "JACKLOADER: jackd.pa exists." >> $JACKLOG
else
echo "JACKLOADER: jackd.pa not found. Exiting." >> $JACKLOG
notify-send "JACK" \
"Error: No configuration file for pulse (jackd.pa)"
echo "Stopped" > $LOGDIR/status
exit 1
fi
if [ -s $JACKFILE ]; then
echo "JACKLOADER: jackd (jack settings) exists." >> $JACKLOG
else
echo "JACKLOADER: jackd (jack settings) not found." >> $JACKLOG
notify-send "JACK" \
"Error: No configuration file for jack (jackd)"
echo "Stopped" > $LOGDIR/status
exit 1
fi
if [ -s $RACKFILE ]; then
echo "JACKLOADER: array.rack exists." >> $JACKLOG
else
echo "JACKLOADER: array.rack not found: No DSP." >> $JACKLOG
echo "Stopped" > $LOGDIR/status
exit 1
fi
if [ -s "/home/`whoami`/.pulse/client.conf" ]; then
echo "JACKLOADER: client.conf exists in ~/.pulse/" >> $JACKLOG
else
echo "autospawn=no" > /home/`whoami`/.pulse/client.conf
echo "JACKLOADER: Created client.conf. Killing pulseaudio..." >> $JACKLOG
pulseaudio --kill >> $JACKLOG 2>&1 && sleep 1
echo "JACKLOADER: Pulseaudio killed." >> $JACKLOG
fi
if [ -s "/home/`whoami`/.lircrc" ]; then
echo "JACKLOADER: lircrc exists. Remote support ON." >> $JACKLOG
else
echo "JACKLOADER: lircrc does not exist. Remote support OFF." >> $JACKLOG
fi
sleep 1 && echo "JACKLOADER: Ready. Starting..." >> $JACKLOG
# Start JACK
#-----------------------------------------#
jackd $JACKSET >> $JACKLOG 2>&1 &
# Start Pulse
#-----------------------------------------#
sleep 2 && pulseaudio -n -F $PULSECONF >> $JACKLOG 2>&1 &
# Start JACK transport
#-----------------------------------------#
sleep 2 && echo "play" | jack_transport > /dev/null 2>&1 &
# **does not work on fedora**
# sleep 1 && jack-info > $TRANS &&
# Verify transport and continue
#-----------------------------------------#
#if [ -s $TRANS ]; then
# echo "JACKLOADER: transport file exists and is not empty which indicates success, moving on..." >> $JACKLOG
#else
# notify-send "JACK" \
# "There was an error starting the sound servers.\nPlease see the log files."
# echo "JACKLOADER: Failure to start sound servers, existing with status 1." >> $JACKLOG
# # leave a cookie for the next run to know that we have failed
# exit 1
#fi
# Launch DSP
#-----------------------------------------#
sleep 2 && jack-rack -n $RACKFILE > /dev/null 2>&1 &
sleep 4 && sleep 4 &&
# Connect the components together
#-----------------------------------------#
# First disconnect the sink from the sound card
jack_disconnect "system:playback_1" "PulseAudio JACK Sink:front-left" >> $JACKLOG 2>&1
jack_disconnect "system:playback_2" "PulseAudio JACK Sink:front-right" >> $JACKLOG 2>&1
# Connect the sink to jack rack
jack_connect "PulseAudio JACK Sink:front-left" "jack_rack:in_1" >> $JACKLOG 2>&1
jack_connect "PulseAudio JACK Sink:front-right" "jack_rack:in_2" >> $JACKLOG 2>&1
echo "PulseAudio" > $LOGDIR/dsp_input
# Connect jack rack to the sound card
jack_connect "jack_rack:out_1" "system:playback_1" >> $JACKLOG 2>&1
jack_connect "jack_rack:out_2" "system:playback_2" >> $JACKLOG 2>&1
echo "DSP" > $LOGDIR/jack_input
# Set volume to last level
#VOLUME=`cat ~/.volume`
#pactl set-sink-volume 0 $VOLUME
# All done, notify & exit
#------------------------------------------#
notify-send "JACK" \
"The DSP is enabled and JACK is connected.\nSound card: X-Fi Surround 5.1 Pro\nChannels: Stereo playback"
echo "JACKLOADER: DSP loaded and components connected. Exiting with status 0." >> $JACKLOG
echo "Started" > $LOGDIR/status
exit 0