00001 #include "d_lpc10.h"
00002 #include <math.h>
00003
00004
00005
00006
00007
00008
00009
00010
00011 static FLOAT sout[LFRAME];
00012
00013 void synths(BOOL voice[], INDEX pitch, FLOAT rms, FLOAT rc[], FLOAT speech[], INDEX * k)
00014 {
00015 INDEX i, j, nout;
00016 FLOAT ratio, g2pass;
00017 FLOAT gprime = (FLOAT)0.7;
00018
00019 pitch = MMAX(MMIN(pitch, 156), 20);
00020 for (i = 0; i < ORDER; i++)
00021 rc[i] = MMAX(MMIN(rc[i], (FLOAT).99), (FLOAT)-.99);
00022
00023 *k = 0;
00024 pitsyn(voice, pitch, rms, rc, ivuv, ipiti, rmsi, rci, &nout, &ratio);
00025 if (nout > 0) {
00026 for (j = 0; j < nout; j++) {
00027 irc2pc(rci[j], pc, gprime, &g2pass);
00028 bsynz(pc, ipiti[j], ivuv[j], sout, rmsi[j], ratio, g2pass);
00029
00030 #ifdef VIEW_EXCIT
00031
00032
00033 #else
00034 deemp(sout, ipiti[j]);
00035 #endif
00036
00037 for (i = 0; i < ipiti[j]; i++) {
00038 speech[*k] = (FLOAT)(sout[i] * 0.000244140625);
00039 (*k)++;
00040 }
00041 }
00042 }
00043 }
00044
00045