#!/bin/bash

contrast=contrast
bindir=/usr/bin
milena=$bindir/milena
if [ ! -f ~/.milena_bookrc ] ; then
	cat > ~/.milena_bookrc << EOF
mbrola=/usr/bin/mbrola
voice=/usr/share/mbrola/pl1/pl1
lame=/usr/bin/lame
tempo=0.8
tempo_sub=0.8
pitch=0.9
bitrate=40
soxeffect_say="$contrast"
soxeffect_sub="vol 1.2 $contrast"
soxeffect_book="vol 0.7 pad 0 0.2 reverb 45 50 40 vol 2.5 amplitude 0.05 $contrast"
bookmode=stereo
lame_noswap=yes
EOF
fi

if [ -f ~/.milena_bookrc ] ; then
. ~/.milena_bookrc
fi


function goodval
{
	if echo $1 | egrep -v '^[0-2](\.[0-9]*)?' >/dev/null; then
		return 1
	fi
	return `echo $1 $2 $3 | awk '{if ($1 < $2 || $1 > $3) print 1; else print 0}'`
}

function getyesno
{
	while true ; do
		echo -n "$1"
		read rc
		if [ "$rc" == "t" ] || [ "$rc" == "T" ] ; then
			return 0
		fi
		if [ "$rc" == "n" ] || [ "$rc" == "N" ] ; then
			return 1
		fi
		echo -n "Błąd, odpowiedz t albo n. "
	done		
}

function getdbl
{
while true; do
	echo -n "$1, domyślnie ${!2} : "
	read rc
	if [ "$rc" = "" ] ; then
		return
	fi
	if goodval $rc 0.4 2.0 ; then
		export $2=$rc
		break
	fi
	echo -n "Błąd, podaj wartość od 0.4 do 2.0. "
done
}


echo Witaj w w konfiguratorze Mileny.
echo Program poprosi cię o wpisanie różnych danych.
echo Po wpisaniu wciśnij Enter by przejść dalej.

getdbl 'podaj prędkość Mileny' 'tempo'
getdbl 'podaj prędkość subplayera' 'tempo_sub'
getdbl 'podaj wysokość głosu mileny' 'pitch'
while true; do
	echo -n "podaj nazwę pliku dla zaawansowanej konfiguracji mbroli lub wpisz n aby nie uwzględniać pliku "
	if [ "$mbrola_conf" != "" ] ; then
		echo -n ", domyślnie $mbrola_conf"
	else
		echo -n ", domyślnie bez pliku"
	fi
	echo -n " : "
	read mb
	if [ "$mb" == "n" ] ; then
		mb=""
		break
	fi
	if [ "$mb" = "" ] ; then
		mb="$mbrola_conf"
		if [ "$mb" = "" ] ; then
			break
		fi
	fi
	if [ ! -f "$mb" ] ; then
		if getyesno "Plik nie istnieje, czy mam go stworzyc? t/n : " ; then
			break
		fi
	else
		break
	fi
done
mbrola_conf="$mb"

while true; do
	echo -n "Podaj bitrate (kompresję) dla lame mp3, domyślnie $bitrate : "
	read br
	cr=""
	if [ "$br" = "" ] ; then
		break
	fi
	for i in 32 40 48 56 64; do
		if [ "$br" = "$i" ] ; then
			cr="y"
			break
		fi
	done
	if [ "$cr" = "y" ] ; then
		bitrate=$br
		break
	fi
	echo -n "Błąd, dopuszczalne wartości to 32,40,48,56 i 64. "
done
echo Wprowadzono następujące dane:

echo "prędkość Mileny: $tempo"
echo "prędkość subplayera: $tempo_sub"
echo "wysokość głosu mileny: $pitch"
if [ "$mbrola_conf" = "" ] ; then
	echo "bez zaawansowanego pliku mbroli"
else
	if [ -f "$mbrola_conf" ] ; then
		echo -n "istniejący"
	else
		echo -n "nowy"
	fi
	echo " plik zaawansowany mbroli: $mbrola_conf"
fi
echo "Kompresja MP3: $bitrate kbps"
if ! getyesno "Czy wprowadzone dane są prawidłowe? t/n " ; then
	exit 0
fi
(
echo mbrola=\"$mbrola\"
echo voice=\"$voice\"
echo lame=\"$lame\"
echo tempo=$tempo
echo tempo_sub=$tempo_sub
echo pitch=$pitch
echo bitrate=$bitrate
echo soxeffect_say=\"$soxeffect_say\"
echo soxeffect_sub=\"$soxeffect_sub\"
echo soxeffect_book=\"$soxeffect_book\"
echo bookmode=$bookmode
if [ "$mbrola_conf" != "" ] ; then
	echo mbrola_conf=\"$mbrola_conf\"
fi
if [ "$lame_noswap" != "yes" ] ; then
	echo -n '#'
fi
echo lame_noswap=yes
) > ~/.milena_bookrc

if [ "$mbrola_conf" != "" ] && [ ! -f "$mbrola_conf" ] ; then
cat > "$mbrola_conf" <<EOF
pause comma 20
pause statement 100
pause exclamation 100
pause question 180
pause colon 50
pause ellipsis 220
pause conj 15
pause break 220

pause dialog comma 40
pause dialog statement 150
pause dialog exclamation 80
pause dialog question 80
pause dialog colon 50
pause dialog ellipsis 180
pause dialog break 50

length stress 5

EOF
fi

