#!/bin/sh
#
# Diverse Bristol audio routines.
# Copyright (c) by Nick Copeland <nickycopeland@hotmail.com> 1996,2011
#
#  This program is free software; you can redistribute it and/or modify
#  it under the terms of the GNU General Public License as published by
#  the Free Software Foundation; either version 3 of the License, or
#  (at your option) any later version.
#
#  This program 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 General Public License
#  along with this program; if not, see <http://www.gnu.org/licenses/>.
#
#set -x

args=$*

vers=0.60.10

cli=0
engine=1
gui=1
quiet=0
verbose=0
jack=0
export JACK_START_SERVER=1
midi=seq
HELP=0
README=0

EMULATE=hammondB3
FREQ=0

#PORT=5028
# Randomise the port numbers, can be overridden by -port which would be a
# requirement for multitimbral
PORT=`date +%N`
PORT=`expr $PORT % 65536` >/dev/null 2>&1
if [ -z $PORT ]; then
	PORT=`date +%s`
	PORT=`expr $PORT % 65536` >/dev/null 2>&1
fi
if [ $PORT -lt 1024 ]; then
	PORT=`expr $PORT + 5028`
fi

valgrind=0
execme=1
liblist=0

host=net

engstatus=0
guistatus=0

JS=1
RATE=44100
DRIVER=-jack
COUNT=256

LOGO=no

#
# The following is configured by the autotools process.
#
BRISTOL_DIR=/usr/share/bristol

#
# Whatever directory was called for startBristol we also neede in the PATH
#
PATH=${PATH}:`dirname $0`

showhelp()
{
	if [ $HELP -eq 3 ]; then
		brighton -V
		exit 0
	fi
	if [ $HELP -eq 2 ]; then
		brighton -h | less
		exit 0
	fi
	if [ $verbose = 1 ]; then
		# let the bristol gui give a verbose help text.
		engine=0
	else
		brighton -V
		echo
		echo "startBristol [-explorer|-mini|-memory|-hammond|-b3|-dx|-axxe|-odyssey|-2600|-mono|-poly|-juno|-prophet|-pro10|-pro52|-mixer|-vox|-rhodes|-rhodesbass|-obx|-obxa|-aks|<others>] [-oss|-alsa|-jack] [[-help|-h] [-verbose|-v]]"
		echo
		echo "Try 'startBristol -v|-h' for more verbose help output on device configuration."
		echo
		echo "Try 'startBristol -readme' for very verbose output"
		echo "Try 'startBristol -readme -mini' for info on specific emulator"
		echo
		echo "Try 'startBristol -b3' or 'startBristol -jack', for example, if you are unsure."
		echo
		echo "Q&A to nickycopeland@hotmail.com"
		echo "bugs, features, enhancements to http://sourceforge.net/projects/bristol"
		echo
		exit 0
	fi
}

if [ $# = 0 ]; then
	HELP=1
fi

# Nokey: Don't override BRISTOL if it's not already set
if [ -z "$BRISTOL" ]; then
	if [ -d "${BRISTOL_DIR}/memory" ]; then
		export BRISTOL=${BRISTOL_DIR}
	else
		# We should first take our basename and look for a binary
		BRISTOL=`dirname $0`
		BRISTOL=`dirname $BRISTOL`

		if [ ! -f $BRISTOL/bin/bristol ]; then
			#
			# Take a default
			#
			export BRISTOL=/opt/audio/bristol
		fi
	fi
fi
export BRISTOL

for index in $*; do
	if [ $index = "-stop" ]; then
		pkill bristol
		if [ $? != 0 ]; then
			pkill brighton
		fi
		exit 0
	fi
	if [ $index = "-exit" ]; then
		pkill bristol
		pkill brighton
		exit 0
	fi
	if [ $index = "-kill" ]; then
		pkill -f "\\$2"
		exit 0
	fi
	if [ $index = "-host" ]; then
		host=`echo $2 | awk -F: '{print $1}'`
		if [ $host = "unix" ]; then
			localport=`echo $2 | awk -F: '{print $2}'`
			if [ -z $localport ]; then
				localport=$PORT
			fi
		fi
	fi
	if [ $index = "-freqtweak" ]; then
		FREQ=$2
		if [ $FREQ != 0 -a -x /usr/bin/cpufreq-set -a $execme -eq 0 ]; then
			echo Setting min CPU speed to $FREQ
			cpufreq-set -d ${FREQ}
		fi
	fi
	if [ $index = "-count" ]; then
		COUNT=$2
	fi
	if [ $index = "-rc" ]; then
		BRISTOL_RC=/dev/null
	fi
	if [ $index = "-sleep" ]; then
		sleep $2
	fi
	if [ $index = "-emulate" ]; then
		EMULATE=$2
	fi
	if [ $index = "-port" ]; then
		PORT=$2
	fi
	if [ $index = "-cache" ]; then
		export BRISTOL_CACHE=$2
	fi
	if [ $index = "-memdump" ]; then
		export BRISTOL_DUMP=$2
	fi
	if [ $index = "--summary" ]; then
		brighton --summary
		exit 0
	fi
	if [ $index = "-summary" ]; then
		brighton -summary
		exit 0
	fi
	if [ $index = "-console" ]; then
		export BRISTOL_LOG_CONSOLE=true
	fi
	if [ $index = "-cli" ]; then
		cli=1
		execme=0
	fi
	if [ $index = "-exec" ]; then
		execme=0
	fi
	if [ $index = "-ladi" ]; then
		execme=1
	fi
	if [ $index = "-valgrind" ]; then
		valgrind=1
	fi
	if [ $index = "-debug" ]; then
		liblist=1
	fi
	if [ $index = "-liblist" ]; then
		liblist=1
	fi
	if [ $index = "-master" ]; then
		engine=0
	fi
	if [ $index = "-engine" ]; then
		engine=0
	fi
	if [ $index = "-gui" ]; then
		gui=0
	fi
	if [ $index = "-readme" ]; then
		README=1
	fi
	if [ $index = "-v" ]; then
		HELP=2
	fi
	if [ $index = "--v" ]; then
		HELP=2
	fi
	if [ $index = "-verbose" ]; then
		verbose=1
	fi
	if [ $index = "--verbose" ]; then
		verbose=1
	fi
	if [ $index = "-version" ]; then
		HELP=3
	fi
	if [ $index = "-V" ]; then
		HELP=3
	fi
	if [ $index = "-logo" ]; then
		LOGO=yes
	fi
	if [ $index = "-h" ]; then
		HELP=2
	fi
	if [ $index = "--h" ]; then
		HELP=2
	fi
	if [ $index = "-help" ]; then
		HELP=2
	fi
	if [ $index = "--help" ]; then
		HELP=2
	fi
	if [ $index = "-libtest" ]; then
		engine=0
	fi
	if [ $index = "-quiet" ]; then
		quiet=1
	fi
	if [ $index = "-q" ]; then
		quiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi
	if [ $index = "-jsmuquiet=1
	fi