#!/bin/sh

if [ "$1" = -kill ]; then
PROCESS=`ps aux | grep sox | grep 'sox -t' | sed -n 1p | sed 's/^[ \t]*//' | cut -f 1 -d ' '`
kill -TERM "$PROCESS"
exit 0
fi 

if [ "$1" = -kill2 ]; then
if [ -f "$ENTRY1" ]; then
#FILE2=`echo "$FILE" | head -c 20`
#PROCESS=`ps aux | grep sox | grep "$FILE2" | sed -n 1p | sed 's/^[ \t]*//' | cut -f 1 -d ' '`
killall play
else
PROCESS=`ps aux | grep sox | grep "$TYPECOMBO" | sed -n 1p | sed 's/^[ \t]*//' | cut -f 1 -d ' '`
fi
kill -TERM "$PROCESS"
exit 0
fi

if [ "$ENTRY1" = "" ]; then
if [ "$DIRENTRY" != "" ]; then
ENTRY1="$DIRENTRY"
fi
fi

if [ "$ENTRY1" = "" ]; then
if [ "`echo "$MAIN_DIALOG" | grep MERGE-NOW`" != "" ]; then
Xdialog --title "MESSAGE BOX" --msgbox "編集するディレクトリが選択されていません。" 0 0
else
Xdialog --title "MESSAGE BOX" --msgbox "編集するファイルまたはディレクトリが選択されていません。" 0 0
fi
exit 0
fi

#if [ "$CHECKBOX2" = "true" ]; then
#num=2
#name=stereo
#echo > /tmp/soxavg.txt
#fi
#if [ "$CHECKBOX2" = "false" ]; then
#num=1
#name=mono
#echo avg > /tmp/soxavg.txt
#fi

if [ "`echo "$MAIN_DIALOG" | grep AMPLITUDE-NOW`" != "" ]; then

if [ "$CHECKBOX" = false ]; then
DIR=`Xdialog --title "Select your output directory" --dselect / 0 0 2>&1`
fi
if [ "$CHECKBOX" = true ]; then
if [ -f "$ENTRY1" ]; then
DIR="`dirname "$ENTRY1"`/"
FILE="`basename "$ENTRY1"`"
else
DIR="$ENTRY1"/
fi
fi
gxmessage -borderless -font "sans bold 14" -center -bg "orange" -buttons "" " Sox now running" &
X1PID=$!
if [ "`echo "$MAIN_DIALOG" | grep AMPLITUDE-NOW`" != "" ]; then
echo "$ENTRY2" > /tmp/soxtemp.txt
fi
if [ -f /tmp/soxvolumemax.txt ]; then
rm -f /tmp/soxvolumemax.txt
if [ -f "$ENTRY1" ]; then
cd `dirname "$ENTRY1"`
if ! [ -f /tmp/soxvolume.txt ]; then
sox "$FILE" "$DIR"adjusted-"$FILE" stat -v 2>/tmp/soxtemp.txt
fi
if [ "`cat /tmp/soxtemp.txt`" = '1.000' ]; then
rm -f "$DIR"adjusted-"$FILE"
Xdialog --title "MESSAGE BOX" --msgbox ""$FILE" would be unchanged" 0 0 &
fi
if [ "`cat /tmp/soxtemp.txt`" != '1.000' ]; then
sox -v `cat /tmp/soxtemp.txt` "$FILE" "$DIR"adjusted-"$FILE" 2>/tmp/soxtemp2.txt
if [ "`cat /tmp/soxtemp2.txt`" != "" ]; then
Xdialog --title "MESSAGE BOX" --msgbox "`cat /tmp/soxtemp2.txt`" 0 0 &
fi
fi
fi
if [ -d "$ENTRY1" ]; then
cd "$ENTRY1"
ls *."$TYPECOMBO" | while read FILE
do
if [ "`echo "$SOXGUI" | grep VOLUME-VOLUME`" = "" ]; then
sox "$FILE" "$DIR"adjusted-"$FILE" stat -v 2>/tmp/soxtemp.txt
fi
if [ "`cat /tmp/soxtemp.txt`" = '1.000' ]; then
rm -f "$DIR"adjusted-"$FILE"
Xdialog --title "MESSAGE BOX" --msgbox ""$FILE" は変更されていません" 0 0 &
fi
if [ "`cat /tmp/soxtemp.txt`" != '1.000' ]; then
sox -v `cat /tmp/soxtemp.txt` "$FILE" "$DIR"adjusted-"$FILE" 2>/tmp/soxtemp2.txt
if [ "`cat /tmp/soxtemp2.txt`" != "" ]; then
Xdialog --title "MESSAGE BOX" --msgbox "`cat /tmp/soxtemp2.txt`" 0 0 &
fi
fi
done
fi
fi
rm -f /tmp/sox*
kill $X1PID 2>/dev/null
exit 0
fi


if [ "`echo "$MAIN_DIALOG" | grep MERGE-NOW`" != "" ]; then
if [ -f "$ENTRY1" ]; then
Xdialog --title "MESSAGE BOX" --msgbox "ファイルでなくディレクトリを選択して下さい" 0 0 &
exit 0
fi
if [ "$CHECKBOX" = false ]; then
DIR=`Xdialog --title "Select your output directory" --dselect / 0 0 2>&1`
else
DIR="$ENTRY1"/
fi
cd "$ENTRY1"
if [ "$TYPECOMBO" = mp3 ]; then
rxvt -bg orange --geometry 79x10 -e mp3wrap "$DIR"merged.mp3 *.mp3 
else
gxmessage -borderless -font "sans bold 14" -center -bg "orange" -buttons "" " Sox is now running" &
X1PID=$!
sox *."$TYPECOMBO" "$DIR"soxmerged."$TYPECOMBO" 2>/tmp/soxmerge.txt
kill $X1PID 2>/dev/null
if [ "`cat /tmp/soxmerge.txt`" != "" ]; then
Xdialog --title "MESSAGE BOX" --msgbox "`cat /tmp/soxmerge.txt`" 0 0
fi
fi
rm -f /tmp/soxmerge.txt
exit 0
fi

if [ "`echo "$MAIN_DIALOG" | grep RECORD-NOW`" != "" ]; then
if [ "$ENTRY1" = "" ]; then
Xdialog --title "MESSAGE BOX" --msgbox "出力先ディレクトリを選択する必要があります。" 0 0
exit 0
fi
if [ "$ENTRY2" = "" ]; then
ENTRY2=default
fi
cd "$ENTRY1"
gxmessage -borderless -font "sans bold 14" -center -bg "orange" -buttons "" " Recording now in Progress." &
X1PID=$!
if [ "$RADIOBUTTON1" = true ]; then
rec -r "$KHZCOMBO" -c 2 "$ENTRY2"."$TYPECOMBO"
else
rec -r "$KHZCOMBO" "$ENTRY2"."$TYPECOMBO"
fi
kill $X1PID 2>/dev/null
fi

if [ "`echo "$MAIN_DIALOG" | grep PLAY-NOW`" != "" ]; then
if [ -f "$ENTRY1" ]; then
FILE=`basename "$ENTRY1"`
cd `dirname "$ENTRY1"`
rxvt -bg orange --geometry 79x10 -e play "$FILE"
else
cd "$ENTRY1"
if [ "`ls *."$TYPECOMBO"`" = "" ]; then
Xdialog --title "MESSAGE BOX" --msgbox "選択したディレクトリには "$TYPECOMBO"
ファイルはありません。" 0 0
exit 0
fi
rxvt -bg orange --geometry 79x10 -e play *."$TYPECOMBO"
fi
fi

if [ "`echo "$MAIN_DIALOG" | grep SOUND-EFFECTS-NOW`" != "" ]; then
if [ -f "$ENTRY1" ]; then
FILE=`basename "$ENTRY1"`
DIR=`dirname "$ENTRY1"`
fi
if [ -d "$ENTRY1" ]; then
DIR="$ENTRY1"
fi
if [ "$CHECKBOX" = false ]; then
OUTDIR=`Xdialog --title "出力ディレクトリを選択して下さい" --dselect / 0 0 2>&1`
else
OUTDIR="$DIR"
fi
cd "$DIR"
if [ "$TYPECOMBO2" = chorus ]; then
default=`Xdialog --radiolist "デフォルトを使いますか?" 200x150 10 "no" "" off "yes" "" ON 2>&1`
if [ "$default" = yes ]; then
gainin=1
gainout=.5
delay=100
decay=1
speed=1
depth=1
modulation=-t
else
gainin=`Xdialog --inputbox "gain-in ボリュームを入力して下さい:" 0 0 2>&1`
if [ "$?" != 0 ]; then soxgui; exit 0; fi
gainout=`Xdialog --inputbox "gain-outボリュームを入力して下さい:" 0 0 2>&1`
if [ "$?" != 0 ]; then soxgui; exit 0; fi
delay=`Xdialog --inputbox "遅延(delay)をミリ秒で入力して下さい:" 0 0 2>&1`
if [ "$?" != 0 ]; then soxgui; exit 0; fi
decay=`Xdialog --inputbox "減衰(decay)をミリ秒で入力して下さい:" 0 0 2>&1`
if [ "$?" != 0 ]; then soxgui; exit 0; fi
speed=`Xdialog --inputbox "速度をヘルツ(Hertz)で入力して下さい:" 0 0 2>&1`
if [ "$?" != 0 ]; then soxgui; exit 0; fi
depth=`Xdialog --inputbox "深度(depth)をミリ秒で入力して下さい:" 0 0 2>&1`
if [ "$?" != 0 ]; then soxgui; exit 0; fi
modulation=`Xdialog --radiolist "変調形式を選択して下さい:" 200x150 10 "-s" "sinodial" off "-t" "triangular" ON 2>&1`
if [ "$?" != 0 ]; then soxgui; exit 0; fi
fi
#rox "$OUTDIR"
#kill $X1PID 2>/dev/null
gxmessage -borderless -font "sans bold 14" -center -bg "orange" -buttons "" " Sox is now running" &
X1PID=$!
if [ -f "$ENTRY1" ]; then
sox "$FILE" "$OUTDIR"/chorus-"$FILE" chorus "$gainin" "$gainout" "$delay" "$decay" "$speed" "$depth" "$modulation"
fi
if [ -d "$ENTRY1" ]; then
ls *."$TYPECOMBO" | while read FILE
do
sox "$FILE" "$OUTDIR"/chorus-"$FILE" chorus "$gainin" "$gainout" "$delay" "$decay" "$speed" "$depth" "$modulation"
done
fi
fi
if [ "$TYPECOMBO2" = reverb ]; then
default=`Xdialog --radiolist "デフォルトを使いますか?" 200x150 10 "no" "" off "yes" "" ON 2>&1`
if [ "$default" = yes ]; then
gainout=.5
TIME=1000
delay=100
else
gainout=`Xdialog --inputbox "gain-outボリュームを入力して下さい:" 0 0 2>&1`
if [ "$?" != 0 ]; then soxgui; exit 0; fi
TIME=`Xdialog --inputbox "残響時間をミリ秒で入力して下さい:" 0 0 2>&1`
if [ "$?" != 0 ]; then soxgui; exit 0; fi
delay=`Xdialog --inputbox "遅延(delay)をミリ秒で入力して下さい:" 0 0 2>&1`  ###need to add multiple inputs for delay
if [ "$?" != 0 ]; then soxgui; exit 0; fi
fi
#rox "$OUTDIR"
kill $X1PID 2>/dev/null
gxmessage -borderless -font "sans bold 14" -center -bg "orange" -buttons "" " Sox is now running" &
X1PID=$!
if [ -f "$ENTRY1" ]; then
sox "$FILE" "$OUTDIR"/reverb-"$FILE" reverb "$gainout" "$TIME" "$delay"
fi
if [ -d "$ENTRY1" ]; then
ls *."$TYPECOMBO" | while read FILE
do
sox "$FILE" "$OUTDIR"/reverb-"$FILE" reverb "$gainout" "$TIME" "$delay"
done
fi
fi
if [ "$TYPECOMBO2" = echo ]; then
default=`Xdialog --radiolist "デフォルトを使いますか?" 200x150 10 "no" "" off "yes" "" ON 2>&1`
if [ "$default" = yes ]; then
gainin=.5
gainout=.5
delay=100
decay=.5
else
gainin=`Xdialog --inputbox "gain-in ボリュームを入力して下さい:" 0 0 2>&1`
if [ "$?" != 0 ]; then soxgui; exit 0; fi
gainout=`Xdialog --inputbox "gain-out ボリュームを入力して下さい:" 0 0 2>&1`
if [ "$?" != 0 ]; then soxgui; exit 0; fi
delay=`Xdialog --inputbox "遅延(delay)をミリ秒で入力して下さい:" 0 0 2>&1`
if [ "$?" != 0 ]; then soxgui; exit 0; fi
decay=`Xdialog --inputbox "減衰(decay)をミリ秒で入力して下さい:" 0 0 2>&1`
if [ "$?" != 0 ]; then soxgui; exit 0; fi
fi
#rox "$OUTDIR"
kill $X1PID 2>/dev/null
gxmessage -borderless -font "sans bold 14" -center -bg "orange" -buttons "" " Sox is now running" &
X1PID=$!
if [ -f "$ENTRY1" ]; then
sox "$FILE" "$OUTDIR"/echo-"$FILE" echo "$gainin" "$gainout" "$delay" "$decay"
fi
if [ -d "$ENTRY1" ]; then
ls *."$TYPECOMBO" | while read FILE
do
sox "$FILE" "$OUTDIR"/echo-"$FILE" echo "$gainin" "$gainout" "$delay" "$decay"
done
fi
fi
if [ "$TYPECOMBO2" = flange ]; then
default=`Xdialog --radiolist "デフォルトを使いますか?" 200x150 10 "no" "" off "yes" "" ON 2>&1`
if [ "$default" = yes ]; then
gainin=.5
gainout=.5
delay=4
decay=.5
speed=1
modulation=-t
else
gainin=`Xdialog --inputbox "gain-in ボリュームを入力して下さい:" 0 0 2>&1`
if [ "$?" != 0 ]; then soxgui; exit 0; fi
gainout=`Xdialog --inputbox "gain-out ボリュームを入力して下さい:" 0 0 2>&1`
if [ "$?" != 0 ]; then soxgui; exit 0; fi
delay=`Xdialog --inputbox "遅延(delay)をミリ秒で入力して下さい:" 0 0 2>&1`
if [ "$?" != 0 ]; then soxgui; exit 0; fi
decay=`Xdialog --inputbox "減衰(decay)をミリ秒で入力して下さい:" 0 0 2>&1`
if [ "$?" != 0 ]; then soxgui; exit 0; fi
speed=`Xdialog --inputbox "速度をヘルツ(Hertz)で入力して下さい:" 0 0 2>&1`
if [ "$?" != 0 ]; then soxgui; exit 0; fi
modulation=`Xdialog --radiolist "変調形式を選択して下さい:" 200x150 10 "-s" "sinodial" off "-t" "triangular" ON 2>&1`
if [ "$?" != 0 ]; then soxgui; exit 0; fi
fi
#rox "$OUTDIR"
kill $X1PID 2>/dev/null
gxmessage -borderless -font "sans bold 14" -center -bg "orange" -buttons "" " Sox is now running" &
X1PID=$!
if [ -f "$ENTRY1" ]; then
sox "$FILE" "$OUTDIR"/flange-"$FILE" flanger "$gainin" "$gainout" "$delay" "$decay" "$speed" "$modulation"
fi
if [ -d "$ENTRY1" ]; then
ls *."$TYPECOMBO" | while read FILE
do
sox "$FILE" "$OUTDIR"/flange-"$FILE" flanger "$gainin" "$gainout" "$delay" "$decay" "$speed" "$modulation"
done
fi
fi
if [ "$TYPECOMBO2" = phase ]; then
default=`Xdialog --radiolist "デフォルトを使いますか?" 200x150 10 "no" "" off "yes" "" ON 2>&1`
if [ "$default" = yes ]; then
gainin=1
gainout=.5
delay=4
decay=.5
speed=1
modulation=-s
else
gainin=`Xdialog --inputbox "gain-inボリュームを入力して下さい:" 0 0 2>&1`
if [ "$?" != 0 ]; then soxgui; exit 0; fi
gainout=`Xdialog --inputbox "gain-outボリュームを入力して下さい:" 0 0 2>&1`
if [ "$?" != 0 ]; then soxgui; exit 0; fi
delay=`Xdialog --inputbox "遅延(delay)をミリ秒で入力して下さい:" 0 0 2>&1`
if [ "$?" != 0 ]; then soxgui; exit 0; fi
decay=`Xdialog --inputbox "減衰(decay)をミリ秒で入力して下さい:" 0 0 2>&1`
if [ "$?" != 0 ]; then soxgui; exit 0; fi
speed=`Xdialog --inputbox "速度をヘルツ(Hertz)で入力して下さい:" 0 0 2>&1`
if [ "$?" != 0 ]; then soxgui; exit 0; fi
modulation=`Xdialog --radiolist "変調形式を選択して下さい:" 200x150 10 "-s" "sinodial" off "-t" "triangular" ON 2>&1`
if [ "$?" != 0 ]; then soxgui; exit 0; fi
fi
#rox "$OUTDIR"
kill $X1PID 2>/dev/null
gxmessage -borderless -font "sans bold 14" -center -bg "orange" -buttons "" " Sox is now running" &
X1PID=$!
if [ -f "$ENTRY1" ]; then
sox "$FILE" "$OUTDIR"/phase-"$FILE" phaser "$gainin" "$gainout" "$delay" "$decay" "$speed" "$modulation"
fi
if [ -d "$ENTRY1" ]; then
ls *."$TYPECOMBO" | while read FILE
do
sox "$FILE" "$OUTDIR"/phase-"$FILE" phaser "$gainin" "$gainout" "$delay" "$decay" "$speed" "$modulation"
done
fi
fi
if [ "$TYPECOMBO2" = vibro-champ ]; then
default=`Xdialog --radiolist "デフォルトを使いますか?" 200x150 10 "no" "" off "yes" "" ON 2>&1`
if [ "$default" = yes ]; then
speed=30
depth=1
else
speed=`Xdialog --inputbox "速度をヘルツ(Hertz)で入力して下さい(最高30):" 0 0 2>&1`
if [ "$?" != 0 ]; then soxgui; exit 0; fi
depth=`Xdialog --inputbox "深度(depth)値を入力して下さい(0 と 1 の間)" 0 0 2>&1`
if [ "$?" != 0 ]; then soxgui; exit 0; fi
fi
#rox "$OUTDIR"
kill $X1PID 2>/dev/null
gxmessage -borderless -font "sans bold 14" -center -bg "orange" -buttons "" " Sox is now running" &
X1PID=$!
if [ -f "$ENTRY1" ]; then
sox "$FILE" "$OUTDIR"/vibro-"$FILE" vibro "$speed" "$depth"
fi
if [ -d "$ENTRY1" ]; then
ls *."$TYPECOMBO" | while read FILE
do
sox "$FILE" "$OUTDIR"/vibro-"$FILE" vibro "$speed" "$depth"
done
fi
fi
if [ "$TYPECOMBO2" = reverse ]; then
#rox "$OUTDIR"
kill $X1PID 2>/dev/null
gxmessage -borderless -font "sans bold 14" -center -bg "orange" -buttons "" " Sox is now running" &
X1PID=$!
if [ -f "$ENTRY1" ]; then
sox "$FILE" "$OUTDIR"/reverse-"$FILE" reverse
fi
if [ -d "$ENTRY1" ]; then
ls *."$TYPECOMBO" | while read FILE
do
sox "$FILE" "$OUTDIR"/reverse-"$FILE" reverse
done
fi
fi
kill $X1PID 2>/dev/null
Xdialog --title "MESSAGE BOX" --msgbox "全プロセスが完了しました。" 0 0 &
exit 0
fi

if [ "`echo "$MAIN_DIALOG" | grep FADE-NOW`" != "" ]; then
if [ "`echo "$ENTRY1" | grep .wav`" = "" ]; then
Xdialog --title "MESSAGE BOX" --msgbox "WAVファイルを選択して下さい。" 0 0 &
exit 0
fi
if [ "$CHECKBOX" = false ]; then
OUTDIR=`Xdialog --title "出力ディレクトリを選択して下さい" --dselect / 0 0 2>&1`
else
OUTDIR=`dirname "$ENTRY1"`/
fi
FILE=`basename "$ENTRY1"`
NEWFILE=`echo "$FILE" | sed 's/.wav/-soxfade.wav/g'`
FFMPEG=`ffmpeg -i "$ENTRY1" 2>&1`
TIME="`echo "$FFMPEG" | grep 'Duration:' | tr -s ' ' | cut -f 3 -d ' ' | cut -f 1 -d ','`"9999
if [ "$FADEIN" = "" ]; then
FADEIN=0
fi
if [ "$FADEOUT" = "" ]; then
FADEOUT=0
fi
NEWFADEIN=`echo "$FADEIN" | sed 's/[a-z]//g' | sed 's/[A-Z]//g'`
NEWFADEOUT=`echo "$FADEOUT" | sed 's/[a-z]//g' | sed 's/[A-Z]//g'`
gxmessage -borderless -font "sans bold 14" -center -bg "orange" -buttons "" " Sox is now running." &
X1PID=$!
if [ "$RADIOBUTTON1" = true ]; then
sox "$ENTRY1" "$OUTDIR""$NEWFILE" fade t "$NEWFADEIN" "$TIME" "$NEWFADEOUT"
else
sox "$ENTRY1" "$OUTDIR""$NEWFILE" fade "$NEWFADEIN" "$TIME" "$NEWFADEOUT"
fi
kill $X1PID 2>/dev/null
Xdialog --title "MESSAGE BOX" --msgbox "Soxは今、終了しました。" 0 0 &
exit 0
fi

if [ "`echo "$MAIN_DIALOG" | grep MIX-NOW`" != "" ]; then
if [ "$ENTRY2" = "" ]; then
Xdialog --title "MESSAGE BOX" --msgbox "編集する2番目のファイルが選択されていません。" 0 0
exit 0
fi
if [ "$CHECKBOX" = false ]; then
DIR=`Xdialog --title "出力ディレクトリを選択して下さい" --dselect / 0 0 2>&1`
else
DIR="`dirname "$ENTRY1"`/"
fi
FILE=`basename "$ENTRY1"`
EXT=${FILE##*.}
gxmessage -borderless -font "sans bold 14" -center -bg "orange" -buttons "" " Sox is now running." &
X1PID=$!
soxmix "$ENTRY1" "$ENTRY2" "$DIR"soxmixed."$EXT"
kill $X1PID 2>/dev/null
Xdialog --title "MESSAGE BOX" --msgbox "Soxは今、終了しました。" 0 0 &
exit 0
fi

exit 0
