ref: 397265f5791291defa76487c2388e1898e2e433c
dir: /src/cg/cst_mlsa.h/
/*********************************************************************/ /* */ /* Nagoya Institute of Technology, Aichi, Japan, */ /* Nara Institute of Science and Technology, Nara, Japan */ /* and */ /* Carnegie Mellon University, Pittsburgh, PA */ /* Copyright (c) 2003-2004 */ /* All Rights Reserved. */ /* */ /* Permission is hereby granted, free of charge, to use and */ /* distribute this software and its documentation without */ /* restriction, including without limitation the rights to use, */ /* copy, modify, merge, publish, distribute, sublicense, and/or */ /* sell copies of this work, and to permit persons to whom this */ /* work is furnished to do so, subject to the following conditions: */ /* */ /* 1. The code must retain the above copyright notice, this list */ /* of conditions and the following disclaimer. */ /* 2. Any modifications must be clearly marked as such. */ /* 3. Original authors' names are not deleted. */ /* */ /* NAGOYA INSTITUTE OF TECHNOLOGY, NARA INSTITUTE OF SCIENCE AND */ /* TECHNOLOGY, CARNEGIE MELLON UNIVERSITY, AND THE CONTRIBUTORS TO */ /* THIS WORK DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, */ /* INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, */ /* IN NO EVENT SHALL NAGOYA INSTITUTE OF TECHNOLOGY, NARA */ /* INSTITUTE OF SCIENCE AND TECHNOLOGY, CARNEGIE MELLON UNIVERSITY, */ /* NOR THE CONTRIBUTORS BE LIABLE FOR ANY SPECIAL, INDIRECT OR */ /* CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM */ /* LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, */ /* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN */ /* CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ /* */ /*********************************************************************/ /* */ /* Author : Tomoki Toda (tomoki@ics.nitech.ac.jp) */ /* Date : June 2004 */ /* */ /* Modified by Alan W Black (awb@cs.cmu.edu) Jan 2006 */ /* taken from festvox/src/vc/ back into Festival */ /* Modified by Alan W Black (awb@cs.cmu.edu) Nov 2007 */ /* taken from Festival into Flite */ /*-------------------------------------------------------------------*/ /* */ /* Subroutine for Speech Synthesis */ /* */ /*-------------------------------------------------------------------*/ #ifndef __CST_MLSA_H #define __CST_MLSA_H #include "cst_audio.h" #include "cst_wave.h" /* static void waveampcheck(DVECTOR wav, XBOOL msg_flag); */ #define RANDMAX 32767 #define B0 0x00000001 #define B28 0x10000000 #define B31 0x80000000 #define B31_ 0x7fffffff #define Z 0x00000000 typedef struct _VocoderSetup { int fprd; int iprd; int seed; int pd; unsigned long next; Boolean gauss; double p1; double pc; double pj; double pade[21]; double *ppade; double *c, *cc, *cinc, *d1; double rate; int sw; double r1, r2, s; int x; /* for postfiltering */ int size; double *d; double *g; double *mc; double *cep; double *ir; int o; int irleng; /* for MIXED EXCITATION */ int ME_order; int ME_num; double *hpulse; double *hnoise; double *xpulsesig; double *xnoisesig; const double * const *h; } VocoderSetup; static void init_vocoder(double fs, int framel, int m, VocoderSetup *vs, cst_cg_db *cg_db); static void vocoder(double p, double *mc, const float *str, int m, cst_cg_db *cg_db, VocoderSetup *vs, cst_wave *wav, long *pos); static double mlsadf(double x, double *b, int m, double a, int pd, double *d, VocoderSetup *vs); static double mlsadf1(double x, double *b, int m, double a, int pd, double *d, VocoderSetup *vs); static double mlsadf2(double x, double *b, int m, double a, int pd, double *d, VocoderSetup *vs); static double mlsafir (double x, double *b, int m, double a, double *d); static double nrandom (VocoderSetup *vs); static double rnd (unsigned long *next); static unsigned long srnd (unsigned long seed); static void mc2b (double *mc, double *b, int m, double a); static double b2en (double *b, int m, double a, VocoderSetup *vs); static void b2mc (double *b, double *mc, int m, double a); static void freqt (double *c1, int m1, double *c2, int m2, double a, VocoderSetup *vs); static void c2ir (double *c, int nc, double *h, int leng); static void free_vocoder(VocoderSetup *vs); #endif /* __CST_MLSA_H */