#!/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: mgclsp2mgc.in,v 1.11 2015/12/14 05:45:40 uratec 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:
	case -L:
		set lg = "-L"
		breaksw
	case -i:
	case -q:
		@ 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

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

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 '       -q q          : 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

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