#!/bin/sh
# (C) 2005 by Marcos Guglielmetti
# GNU GPL v2 or later

# Cómo saber cuál fue el último valor de buffer de JACK:
#
# Ejemplo
# Esto toma el archivo donde jack guarda la ultima configuracion
# y filtra desde la misma lo siguiente:
# /usr/bin/jackd -R -t2000 -m -dalsa -dhw:0 -r44100 -p1024 -n2 -s -S
#
# mediante esta combinación de comandos
#
#cat ~/.jackdrc | cut -f2 -d"p" | cut -f1 -d " "
# devolviendo: 1024
#
# Es decir que cut -f2 -d"p" separa lo que hay luego de la "p", es decir el field 2, campo 2 teniendo en cuenta
# que "p" divide el campo en 2
# luego queda dividir eso (1024 -n2 -s -S) con un cut -f1 -d " "

# Pero atención: si JACK fue cambiado de latencia al correr (con Ardour o JACK Latenci)
# entonces muchos programas desaparecerán al obligar a usar una latencia distinta de
# la actual.
# Por lo tanto podemos pedir un listado de procesos, y si encontramos a jackd
# usamos su buffer como fue llamado desde la linea de comandos: que es lo mismo, no sirve :S
# ps fax | grep jackd | cut -f2 -d"p" | cut -f1 -d " " 
#
# Pero esto lista la latencia actual:
# jack_lsp -l | grep latency | cut -f2 -d"=" | cut -f2 -d" "
# el problema es que la lista 4 veces!




# si jack está corriendo, todo bien, sino, lo iniciamos
JACK_ACTIVO=0
if pidof jackd 2>&1 >/dev/null; then
JACK_ACTIVO=1
fi

# Si no esta activo jack , lo iniciamos con valor predeterminado
if [ "$JACK_ACTIVO" = "0" ]
then
/usr/bin/jackd -R -t2000 -m -dalsa -dhw:0 -r44100 -p1024 -n2 -s -S &
sleep 3s
fi


QJACK_ACTIVO=0
if pidof qjackctl 2>&1 >/dev/null; then
QJACK_ACTIVO=1
fi


# Si no esta activo jack , lo iniciamos con valor predeterminado
if [ "$QJACK_ACTIVO" = "0" ]
then
qjackctl &
sleep 3s
fi


BUFFERRC=`cat ~/.jackdrc | cut -f2 -d"p" | cut -f1 -d " "`


jack_bufsize $BUFFERRC

echo JACK reseteado con valor de buffer guardado: $BUFFERRC
