# Script to run DX7 emulator
# and to run it through FreeWheeling if it's running

RUN_CMD="jack-dssi-host hexter.so"
HEXTER_MIDI_NAME="hexter"

if ((RUNNING_MERCURY != 0))
then 
  echo Running with Mercury config.
  cd ~/audio
  killall -s KILL ghostess
  RUN_CMD="./gohexter-1"
  HEXTER_MIDI_NAME="ghostess"
  #RUN_CMD="ghostess hexter.so"
fi

JACK_PCM1="alsa_pcm:playback_1"
JACK_PCM2="alsa_pcm:playback_2"
JACK_IN_DISCONNECT="alsa_pcm:capture_2"
FWEELIN_DX7_IN="freewheelin:in_2"

# Startup 
killall -s KILL jack-dssi-host
sleep 1
$RUN_CMD &
# Now check if FreeWheeling is running
FWEELIN_RUNNING=`ps -ef | grep fweelin | awk 'END { print NR }'`
# Startup rack FX
if ((FWEELIN_RUNNING < 2)) 
then
  jack-rack -c 2 -f phat1-echo.rack &
else
  jack-rack -c 1 -f phat1-basic.rack &
fi

echo Connect JACK.
HEXTER_JACK_PORT=`./waitjackports hexter`

JRACK_JACK_IPORTS=`./waitjackports jack_rack_ | grep in`
JRACK_JACK_OPORTS=`./waitjackports jack_rack_ | grep out`
JRACK_JACK_IP1=`echo $JRACK_JACK_IPORTS | awk '{ print $1 }'`
JRACK_JACK_IP2=`echo $JRACK_JACK_IPORTS | awk '{ print $2 }'`
JRACK_JACK_OP1=`echo $JRACK_JACK_OPORTS | awk '{ print $1 }'`
JRACK_JACK_OP2=`echo $JRACK_JACK_OPORTS | awk '{ print $2 }'`

echo Hexter port: $HEXTER_JACK_PORT
echo Hookup DX7 to FX..
jack_disconnect "$HEXTER_JACK_PORT" $JACK_PCM1
jack_disconnect "$HEXTER_JACK_PORT" $JACK_PCM2
echo Ins: $JRACK_JACK_IP1 $JRACK_JACK_IP2
echo Outs: $JRACK_JACK_OP1 $JRACK_JACK_OP2
jack_connect "$HEXTER_JACK_PORT" $JRACK_JACK_IP1
jack_connect "$HEXTER_JACK_PORT" $JRACK_JACK_IP2

if ((FWEELIN_RUNNING < 2)) 
then
  echo Standalone use...

  echo Connect ALSA MIDI.
  aconnect `./waitalsaports $HEXTER_MIDI_NAME`

  echo Connect FX to OUTS.
  jack_connect $JRACK_JACK_OP1 $JACK_PCM1
  jack_connect $JRACK_JACK_OP2 $JACK_PCM2
else
  echo Connect to FreeWheeling...

  echo Connect MIDI from FW.
  HEXTER_MIDI_PORT=`./waitalsaports $HEXTER_MIDI_NAME | awk '{ print $2 }'`
  FWEELIN_MIDI_PORT=`./waitalsaports Freewheeling | awk '{ print $2 }' | cut -d ':' -f 1`:1
  echo MIDI ports: $FWEELIN_MIDI_PORT $HEXTER_MIDI_PORT
  aconnect $FWEELIN_MIDI_PORT $HEXTER_MIDI_PORT
  
  echo Connect DX7+FX to FW.
  jack_disconnect $JACK_IN_DISCONNECT $FWEELIN_DX7_IN
  jack_connect $JRACK_JACK_OP1 $FWEELIN_DX7_IN
fi
