xue@1
|
1 #ifndef SinSynH
|
xue@1
|
2 #define SinSynH
|
xue@1
|
3
|
Chris@5
|
4 /**
|
Chris@5
|
5 \file sinsyn.h - sinusoid synthesis routines for sinusoid modeling cycle. Functions named Sinusoid construct
|
xue@1
|
6 sinusoid segments whose amplitude and frequency are modeled as polynomials or linear combinations of
|
xue@1
|
7 basis functions; functions named SinusoidExp construct sinusoid segments whose logarithmic amplitude
|
xue@1
|
8 derivative and frequency are modeled thus; functions named SinusoidExpA construct sinusoid segments
|
xue@1
|
9 whose log amplitude and frequency are modeled thus.
|
xue@1
|
10 */
|
xue@1
|
11
|
xue@1
|
12 #include "xcomplex.h"
|
xue@1
|
13 //--segmental synthesis routines---------------------------------------------
|
xue@7
|
14 void CosSin(double* datar, double* datai, int CountSt, int CountEn, double f3, double f2, double f1, double f0, double &ph);
|
xue@1
|
15 void Sinusoid(double* data, int T, double a1, double a2, double f1, double f2, double p1, double p2, double* a, double* f, double* p, bool ad=true);
|
xue@1
|
16 void Sinusoid(double* data, int T, double a1, double a2, double f1, double f2, double p1, double p2, bool ad=true);
|
xue@7
|
17 void Sinusoid(int T, double* f, double* a, double* ph, double* da, double aa, double ab, double ac, double ad, double fa, double fb, double fc, double fd, double ph0, double ph2, bool LogA=false);
|
xue@7
|
18 void Sinusoid(int T, double* f, double* ph, double fa, double fb, double fc, double fd, double ph0, double ph2);
|
xue@7
|
19 void Sinusoid(int T, double* data, double a3, double a2, double a1, double a0, double f3, double f2, double f1, double f0, double ph0, double ph2, bool add);
|
xue@1
|
20 void Sinusoid(double* data, int CountSt, int CountEn, double a3, double a2, double a1, double a0, double f3, double f2, double f1, double f0, double &ph, bool add);
|
xue@7
|
21 void Sinusoid_direct(double* f, double* a, double* ph, double* da, int CountSt, int CountEn, double aa, double ab, double ac, double ad, double fa, double fb, double fc, double fd, double &p1, bool LogA=false);
|
xue@7
|
22 void Sinusoid_direct(double* f, double* ph, int CountSt, int CountEn, double fa, double fb, double fc, double fd, double &p1);
|
xue@1
|
23 void SinusoidExp(cdouble* data, int CountSt, int CountEn, double a3, double a2, double a1, double a0, double omg3, double omg2, double omg1, double omg0, double &ea, double &ph, bool add);
|
xue@1
|
24 void SinusoidExp(int T, cdouble* s, cdouble* ds, int M, cdouble* lamda, double** h, double** dih, cdouble& tmpexp);
|
xue@1
|
25 void SinusoidExp(int T, cdouble* s, int M, cdouble* lamda, double** dih, cdouble& tmpexp);
|
xue@1
|
26 void SinusoidExpA(cdouble* data, int CountSt, int CountEn, double a3, double a2, double a1, double a0, double omg3, double omg2, double omg1, double omg0, double &ph, bool add);
|
xue@1
|
27 void SinusoidExpA(int T, cdouble* s, cdouble* ds, int M, double* p, double* q, double** h, double** dh, double** dih, double& tmpph);
|
xue@1
|
28 void SinusoidExpA(int T, cdouble* s, int M, double* p, double* q, double** h, double** dih, double& tmpph);
|
xue@1
|
29 void SinusoidExpA(int T, cdouble* s, int M, double* p, double* q, double** h, double** dih, double ph1, double ph2);
|
xue@1
|
30
|
xue@1
|
31 //--multi-segmental synthesis routines---------------------------------------
|
xue@7
|
32 void ShiftTrinomial(double T, double& b3, double& b2, double& b1, double& b0, double a3, double a2, double a1, double a0);
|
xue@1
|
33 double* SynthesizeSinusoid(double* xrec, int dst, int den, double* phs, int Fr, double* xs, double* fs, double* as, bool add, bool* terminatetag);
|
xue@1
|
34 double* SynthesizeSinusoidP(double* xrecm, int dst, int den, double* phs, int Fr, double* xs, double* fs, double* as, bool add);
|
xue@1
|
35
|
xue@1
|
36 #endif
|