#!/bin/csh -f
# ----------------------------------------------------------------- #
#             The Speech Signal Processing Toolkit (SPTK)           #
#             developed by SPTK Working Group                       #
#             http://sp-tk.sourceforge.net/                         #
# ----------------------------------------------------------------- #
#                                                                   #
#  Copyright (c) 1984-2007  Tokyo Institute of Technology           #
#                           Interdisciplinary Graduate School of    #
#                           Science and Engineering                 #
#                                                                   #
#                1996-2015  Nagoya Institute of Technology          #
#                           Department of Computer Science          #
#                                                                   #
# All rights reserved.                                              #
#                                                                   #
# Redistribution and use in source and binary forms, with or        #
# without modification, are permitted provided that the following   #
# conditions are met:                                               #
#                                                                   #
# - Redistributions of source code must retain the above copyright  #
#   notice, this list of conditions and the following disclaimer.   #
# - Redistributions in binary form must reproduce the above         #
#   copyright notice, this list of conditions and the following     #
#   disclaimer in the documentation and/or other materials provided #
#   with the distribution.                                          #
# - Neither the name of the SPTK working group nor the names of its #
#   contributors may be used to endorse or promote products derived #
#   from this software without specific prior written permission.   #
#                                                                   #
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND            #
# CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES,       #
# INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF          #
# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE          #
# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS #
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,          #
# EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED   #
# TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,     #
# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON #
# ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,   #
# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY    #
# OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE           #
# POSSIBILITY OF SUCH DAMAGE.                                       #
# ----------------------------------------------------------------- #

#########################################################################
#                                                                       #
#   Convert MGC to MGC-LSP                                              #
#                                                                       #
#                                               2011.11  T.Sawada       #
#                                                                       #
#########################################################################

set path    = ( /usr/pkg/SPTK/bin $path )
set sptkver = '3.9'
set cvsid   = '$Id: mgc2mgclsp.in,v 1.12 2015/12/14 05:45:40 uratec Exp $'

set cmnd = $0
set cmnd = $cmnd:t

set a    = 0.35
set d    = 1E-06
set g    = -1
set k    = " "
set m    = 25
set n    = 128
set lg   = " "
set o    = 0
set p    = 4
set s    = 10
set file

@ i = 0
while ($i < $#argv)
	@ i++
	switch ("$argv[$i]")
	case -a:
                @ i++
		set a = $argv[$i]
		breaksw
  	case -c:
                @ i++
		set c = $argv[$i]
		breaksw
	case -d:
		@ i++
		set d = $argv[$i]
		breaksw      
	case -g:
		@ i++
		set g = $argv[$i]
		breaksw
	case -k:
		set k = "-k"
		breaksw
	case -m:
		@ i++
		set m = $argv[$i]
		breaksw
	case -n:
		@ i++
		set n = $argv[$i]
		breaksw
	case -l:
	case -L:
		set lg = "-L"
		breaksw
	case -o:
		@ i++
		set o = $argv[$i]
		breaksw
	case -p:
		@ i++
		set p = $argv[$i]
		breaksw
	case -s:
		@ i++
		set s = $argv[$i]
		breaksw
	case -h:
                set exit_status = 0
		goto usage
		breaksw
        default:
                set file = "$argv[$i]"
                if ( ! -f "$file" ) then
                        echo2 "${cmnd} : Cannot open file ${file}\!"
                        set exit_status = 1
                        goto usage
                endif
                breaksw
        endsw

end

# when input stream is stdin
if ("$file" == "") then
    rm -fr /tmp/sptk-mgc2mgclsp-$uid-$$
    cat > /tmp/sptk-mgc2mgclsp-$uid-$$
    set file=/tmp/sptk-mgc2mgclsp-$uid-$$
endif

goto main

usage:
	echo2 ''
	echo2 " $cmnd - mgc to mgc-lsp"
	echo2 ''
	echo2 '  usage:'
	echo2 "       $cmnd [ options ] [ infile ] > stdout"
	echo2 '  options:'
	echo2 '       -m m          : order of mel-generalized cepstrum      [25]'
	echo2 '       -a a          : alpha of mel-generalized cepstrum      [0.35]'
	echo2 '       -g g          : gamma of mel-generalized cepstrum      [-1]'
        echo2 '       -c c          : gamma of mel-generalized cepstrum = -1 / (int) c (input) '
	echo2 '       -o o          : output format                          [0]'
	echo2 '                       0 (normalized frequency [0...pi])'
	echo2 '                       1 (normalized frequency [0...0.5])'
	echo2 '                       2 (frequency [kHz])'
	echo2 '                       3 (frequency [Hz])'
	echo2 '       -s s          : sampling frequency                     [10kHz]'
	echo2 '       -k            : output gain                            [TRUE]'
	echo2 '       -L            : output log gain rater than linear gain [FALSE]'
	echo2 '    (level 2)'
	echo2 '       -n n          : split number of unit circle            [128]'
	echo2 '       -p p          : maximum number of interpolation        [4]'
	echo2 '       -d d          : end condition of interpolation         [1e-06]'
	echo2 '       -h            : print this message'
	echo2 '  infile(s):'
	echo2 '       mel-grneralized cepstrum (float)                       [stdin]'
	echo2 '  output:'
	echo2 "       mgc-lsp (float)"
	echo2 ''
        echo2 " SPTK: version $sptkver"
        echo2 " CVS Info: $cvsid"
        echo2 ''
exit $exit_status

main:
if ($?c) then
        mgc2mgc -m $m -M $m -a $a -A $a -c $c -C $c -N -U "$file" |\
        lpc2lsp -m $m -s $s -o $o $k $lg -n $n -p $p -d $d
else
        mgc2mgc -m $m -M $m -a $a -A $a -g $g -G $g -N -U "$file" |\
        lpc2lsp -m $m -s $s -o $o $k $lg -n $n -p $p -d $d
endif

rm -fr /tmp/sptk-mgc2mgclsp-$uid-$$
