#! /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-2012  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.6'
set cvsid   = '$Id: mgclsp2mgc.in,v 1.3 2012/12/21 09:44:07 mataki Exp $'

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

set a    = 0.35
set g    = -1
set m    = 25
set lg   = " "
set in   = 0
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 -g:
		@ i++
		set g = $argv[$i]
		breaksw
	case -m:
		@ i++
		set m = $argv[$i]
		breaksw
	case -l:
		set lg = "-l"
		breaksw
	case -i:
		@ i++
		set in = $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

goto main

usage:
	echo2 ''
	echo2 " $cmnd - mgc-lsp to mgc"
	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 '       -i i          : input 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 '       -l            : regard output aslog gain rater than linear gain [FALSE]'
	echo2 '       -h            : print this message'
	echo2 '  infile(s):'
	echo2 "       mgc-lsp (float)                                        [stdin]"
	echo2 '  output:'
	echo2 '       mel-grneralized cepstrum (float)'
	echo2 ''
        echo2 " SPTK: version $sptkver"
        echo2 " CVS Info: $cvsid"
        echo2 ''
exit $exit_status

main:

if ($?c) then
        lsp2lpc -m $m -s $s -i $in $lg $file |\
        mgc2mgc -m $m -M $m -a $a -A $a -c $c -C $c -n -u
else
        lsp2lpc -m $m -s $s -i $in $lg $file |\
        mgc2mgc -m $m -M $m -a $a -A $a -g $g -G $g -n -u
endif
