annotate sinsyn.h @ 13:de3961f74f30 tip

Add Linux/gcc Makefile; build fix
author Chris Cannam
date Mon, 05 Sep 2011 15:22:35 +0100
parents 977f541d6683
children
rev   line source
xue@11 1 /*
xue@11 2 Harmonic sinusoidal modelling and tools
xue@11 3
xue@11 4 C++ code package for harmonic sinusoidal modelling and relevant signal processing.
xue@11 5 Centre for Digital Music, Queen Mary, University of London.
xue@11 6 This file copyright 2011 Wen Xue.
xue@11 7
xue@11 8 This program is free software; you can redistribute it and/or
xue@11 9 modify it under the terms of the GNU General Public License as
xue@11 10 published by the Free Software Foundation; either version 2 of the
xue@11 11 License, or (at your option) any later version.
xue@11 12 */
xue@1 13 #ifndef SinSynH
xue@1 14 #define SinSynH
xue@1 15
Chris@5 16 /**
Chris@5 17 \file sinsyn.h - sinusoid synthesis routines for sinusoid modeling cycle. Functions named Sinusoid construct
xue@1 18 sinusoid segments whose amplitude and frequency are modeled as polynomials or linear combinations of
xue@1 19 basis functions; functions named SinusoidExp construct sinusoid segments whose logarithmic amplitude
xue@1 20 derivative and frequency are modeled thus; functions named SinusoidExpA construct sinusoid segments
xue@1 21 whose log amplitude and frequency are modeled thus.
xue@1 22 */
xue@1 23
xue@1 24 #include "xcomplex.h"
xue@1 25 //--segmental synthesis routines---------------------------------------------
xue@7 26 void CosSin(double* datar, double* datai, int CountSt, int CountEn, double f3, double f2, double f1, double f0, double &ph);
xue@1 27 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 28 void Sinusoid(double* data, int T, double a1, double a2, double f1, double f2, double p1, double p2, bool ad=true);
xue@7 29 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 30 void Sinusoid(int T, double* f, double* ph, double fa, double fb, double fc, double fd, double ph0, double ph2);
xue@7 31 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 32 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 33 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 34 void Sinusoid_direct(double* f, double* ph, int CountSt, int CountEn, double fa, double fb, double fc, double fd, double &p1);
xue@1 35 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 36 void SinusoidExp(int T, cdouble* s, cdouble* ds, int M, cdouble* lamda, double** h, double** dih, cdouble& tmpexp);
xue@1 37 void SinusoidExp(int T, cdouble* s, int M, cdouble* lamda, double** dih, cdouble& tmpexp);
xue@1 38 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 39 void SinusoidExpA(int T, cdouble* s, cdouble* ds, int M, double* p, double* q, double** h, double** dh, double** dih, double& tmpph);
xue@1 40 void SinusoidExpA(int T, cdouble* s, int M, double* p, double* q, double** h, double** dih, double& tmpph);
xue@1 41 void SinusoidExpA(int T, cdouble* s, int M, double* p, double* q, double** h, double** dih, double ph1, double ph2);
xue@1 42
xue@1 43 //--multi-segmental synthesis routines---------------------------------------
xue@7 44 void ShiftTrinomial(double T, double& b3, double& b2, double& b1, double& b0, double a3, double a2, double a1, double a0);
xue@1 45 double* SynthesizeSinusoid(double* xrec, int dst, int den, double* phs, int Fr, double* xs, double* fs, double* as, bool add, bool* terminatetag);
xue@1 46 double* SynthesizeSinusoidP(double* xrecm, int dst, int den, double* phs, int Fr, double* xs, double* fs, double* as, bool add);
xue@1 47
xue@1 48 #endif