#!/bin/sh

# This script runs pinobooster with timidity
# It supports ALSA only
# TiMidity in Debian compilled without Libao mode -OO, using ALSA pcm device instead -Os
# License: same with Pianobooster
# Author: Alexey Loginov <alexl@mageia.org>

MES1="Error: timidity was not found or broken!"
MES2="Error: timidity does not have -OO or -Os options!"
MES3="Error: timidity does not have -iA option!"
MES4="Error: pianobooster was not found!"
MES5="Error: timidity does not have -OO option!"
MES6="Error: timidity does not have -Os option!"
MES7="Libao mode is disabled!"
MES8="ALSA PCM device mode is disabled!"
MES9="Libao mode and ALSA PCM device mode are disabled!"
MES10="Error: timidity was not run!"
MES11="Sorry, but JACK is not supported yet!"

use_jack="0"

if [ -f ~/.config/PianoBooster/"Piano Booster.ini" ]
then
  cp -f ~/.config/PianoBooster/"Piano Booster.ini" ~/.config/PianoBooster/PianoBooster.ini
  sed -i '/\[/d' ~/.config/PianoBooster/PianoBooster.ini
  sed -i '/^$/d' ~/.config/PianoBooster/PianoBooster.ini
  sed -i "s|=|=\'|g" ~/.config/PianoBooster/PianoBooster.ini
  sed -i "s|$|\'|g" ~/.config/PianoBooster/PianoBooster.ini
  sed -i "s|''|'|g" ~/.config/PianoBooster/PianoBooster.ini
  sed -i "s|'\"='\"'|'='|g" ~/.config/PianoBooster/PianoBooster.ini
  . ~/.config/PianoBooster/PianoBooster.ini 2>/dev/null
  rm -f ~/.config/PianoBooster/PianoBooster.ini
fi

lang=`echo $LANGUAGE|cut -d ":" -f 2`

if [ -z "$lang" ]
then
  lang=`echo $LANG|cut -d "." -f 1`
  if [ ! "$lang" = "pt_BR" ] && [ ! "$lang" = "bs_BA" ] && [ ! "$lang" = "zh_HK" ]
  then
     lang=`echo $LANG|cut -d "_" -f 1`
  fi
fi

case $lang in
     ru|be)
          MES1="Ошибка: timidity не был найден, или он неработоспособен!"
          MES2="Ошибка: timidity не имеет опций -OO или -Os!"
          MES3="Ошибка: timidity не имеет опции -iA!"
          MES4="Ошибка: pianobooster не был найден!"
          MES5="Ошибка: timidity не имеет опции -OO!"
          MES6="Ошибка: timidity не имеет опции -Os!"
          MES7="Режим Libao отключен!"
          MES8="Режим устройства ALSA PCM отключен!"
          MES9="Режим Libao и режим устройства ALSA PCM отключены!"
          MES10="Ошибка: timidity не был запущен!"
          MES11="Извините, но JACK ещё не поддерживается!"
          ;;
     fr)
          MES1="Erreur : timidity n’a pas été trouvé ou est cassé !"
          MES2="Erreur : timidity n’a pas les options -OO ou -Os !"
          MES3="Erreur : timidity n’a pas l’option -iA !"
          MES4="Erreur : pianobooster n’a pas été trouvé !"
          MES5="Erreur : timidity n’a pas l’option -OO !"
          MES6="Erreur : timidity n’a pas l’option -Os !"
          MES7="Le mode Libao est désactivé !"
          MES8="Le mode Périphérique ALSA PCM est désactivé !"
          MES9="Les modes Libao et périphérique ALSA PCM sont désactivés !"
          MES10="Erreur : timidity n’a pas été démarré !"
          MES11="Désolé, JACK n’est pas encore supporté !"
          ;;
     fi)
          MES4="Virhe: pianobooster ei löytynyt!"
          MES10="Virhe: timidity ei toimi!"
          ;;
     de)
          MES4="Fehler: pianobooster wurde nicht gefunden!"
          MES10="Fehler: Timidity wurde nicht ausgeführt!"
          ;;
     gl)
          MES1="Erro: Non se atopou Timidity ou está quebrado"
          MES2="Erro: Timidity non ten as opcións -OO ou -Os"
          MES3="Erro: Timidity non ten a opción -iA"
          MES10="Erro: o timidity non foi executado!"
          ;;
     pl)
          MES1="Błąd: timidity nie został znaleziony lub jest uszkodzony!"
          MES2="Błąd: timidity nie posiada opcji -OO lub -Os "
          MES3="Błąd: timidity nie posiada opcji -iA "
          MES4="Błąd: pianobooster nie został znaleziony!"
          MES5="Błąd: timidity nie posiada opcji -OO "
          MES6="Błąd: timidity nie posiada opcji -Os "
          MES7="Tryb Libao jest wyłączony!"
          MES8="Tryb urządzenia ALSA PCM jest wyłączony!"
          MES9="Tryb Libao i tryb urządzenia ALSA PCM jest wyłączony!"
          MES10="Błąd: timidity nie został uruchomiony!"
          MES11="Wybacz, ale JACK nie jest jeszcze obsługiwany!"
          ;;
     uk)
          MES1="Помилка: timidity не знайдено або дані програми пошкоджено!"
          MES2="Помилка: у timidity немає параметрів -OO або -Os!"
          MES3="Помилка: у timidity немає параметра -iA!"
          MES4="Помилка: pianobooster не знайдено!"
          MES10="Помилка: timidity не запущено!"
          ;;
     cs)
          MES10="Chyba: timidity nebyl spuštěn!"
          ;;
     bg)
          MES10="Грешка: Не намирам timidity!"
          ;;
esac

notify_send=`notify-send -v 2>/dev/null`

timidity=`timidity -v 2>/dev/null`

pianobooster=`pianobooster -v 2>/dev/null`

if [ -z "$pianobooster" ]
then
  echo "$MES4"
  if [ ! -z "$notify_send" ]
  then
    notify-send -a pianobooster -i pianobooster "PianoBooster" "$MES4"
  fi
  exit 1
fi

if [ -z "$timidity" ]
then
  timidity=`timidity -h 2>/dev/null`
fi

if [ -z "$timidity" ]
then
   echo "$MES1"
   if [ ! -z "$notify_send" ]
   then
     notify-send -a pianobooster -i pianobooster "PianoBooster" "$MES1"
   fi
   exit 1
fi

alsa=`timidity -help|grep '\-iA'`
LibaoMode=`timidity -help|grep '\-OO'`
PcmDevice=`timidity -help|grep '\-Os'`

if [ "$timidityAlsa" = "false" ]
then
  use_jack="1"
fi

if [ "$use_jack" = "0" ] && [ -z "$LibaoMode" ] && [ "$timidityLibaoMode" = "true" ]
then
  echo "$MES5" "$MES7"
  if [ ! -z "$notify_send" ]
  then
    notify-send -a pianobooster -i pianobooster "PianoBooster" "$MES5 $MES7"
  fi
  sed -i "s|timidityLibaoMode=.*|timidityLibaoMode=false|g" ~/.config/PianoBooster/"Piano Booster.ini" 2>/dev/null
  timidityLibaoMode="false"
fi

if [ "$use_jack" = "0" ] && [ -z "$PcmDevice" ] && [ "$timidityPcmDevice" = "true" ]
then
  echo "$MES6" "$MES8"
  if [ ! -z "$notify_send" ]
  then
    notify-send -a pianobooster -i pianobooster "PianoBooster" "$MES6 $MES8"
  fi
  sed -i "s|timidityPcmDevice=.*|timidityPcmDevice=false|g" ~/.config/PianoBooster/"Piano Booster.ini" 2>/dev/null
  timidityPcmDevice="false"
fi

if [ "$use_jack" = "0" ] && [ "$timidityLibaoMode" = "false" ] && [ "$timidityPcmDevice" = "true" ]
then
  LibaoMode=""
  PcmDevice="1"
fi

if [ "$use_jack" = "0" ] && [ "$timidityLibaoMode" = "true" ] && [ "$timidityPcmDevice" = "false" ]
then
  LibaoMode="1"
  PcmDevice=""
fi

if [ "$use_jack" = "0" ] && [ "$timidityLibaoMode" = "false" ] && [ "$timidityPcmDevice" = "false" ]
then
  LibaoMode=""
  PcmDevice=""
  echo "$MES9" "$MES10"
  if [ ! -z "$notify_send" ]
  then
    notify-send -a pianobooster -i pianobooster "PianoBooster" "$MES9 $MES10"
  fi
  pianobooster
  exit 0
fi

if [ "$use_jack" = "0" ]
then
  if [ ! -z "$alsa" ]
  then
    if [ ! -z "$LibaoMode" ]
    then
      timidity -iA -OO &
    else
      if [ ! -z "$PcmDevice" ]
      then
        timidity -iA -Os &
      else
        echo "$MES2" "$MES10"
        if [ ! -z "$notify_send" ]
        then
          notify-send -a pianobooster -i pianobooster "PianoBooster" "$MES2 $MES10"
        fi
        pianobooster
        exit 0
      fi
    fi
  else
    echo "$MES3" "$MES10"
    if [ ! -z "$notify_send" ]
    then
      notify-send -a pianobooster -i pianobooster "PianoBooster" "$MES3 $MES10"
    fi
    pianobooster
    exit 0
  fi
else
  echo "$MES11" "$MES10"
  if [ ! -z "$notify_send" ]
  then
    notify-send -a pianobooster -i pianobooster "PianoBooster" "$MES11 $MES10"
  fi
  pianobooster
  exit 0
fi

PID=$!

pianobooster

kill $PID
