Mercurial > hg > chourdakisreiss2016
view cpp/chourdakisreiss2016cpp/Parameter.h @ 2:c87a9505f294 tip
Added LICENSE for code, removed .wav files
author | Emmanouil Theofanis Chourdakis <e.t.chourdakis@qmul.ac.uk> |
---|---|
date | Sat, 30 Sep 2017 13:25:50 +0100 |
parents | 144fbd1d29c3 |
children |
line wrap: on
line source
/* * Parameter.h * * Created on: Dec 14, 2016 * Author: Emmanouil Theofanis Chourdakis <e.t.chourdakis@qmul.ac.uk> * * For using that code in research please cite: * * @Article{dlib09, author = {Davis E. King}, title = {Dlib-ml: A Machine Learning Toolkit}, journal = {Journal of Machine Learning Research}, year = {2009}, volume = {10}, pages = {1755-1758}, } * * */ #ifndef PARAMETER_H_ #define PARAMETER_H_ #include "limits.hpp" #include <dlib/optimization.h> #include <iostream> /* * Normalization function */ #define _N(f, fmin, fmax) ((f-fmin) / (fmax-fmin)) using namespace dlib; using namespace std; typedef matrix<double,0,1> column_vector; class Parameter { private: /* * D1: First Comb Filter Delay * G1: First Comb Filter Gain * DA: All-pass Filter Delay * GA (in limits.hpp): All-pass Filter gain * GC: Low-pass Filter Gain * G: Dry/Wet Mix * */ double D1, DA, G1, GC, G; /* * T60: Reverberation Time * ED: Echo Density * C: Clarity * TC: Central Time * SC: Spectral Centroid * SC_MAX: Maximum Spectral Centroid (depends on sample rate) * */ double T60, ED, C, TC, SC, SC_MAX; double SampleRate; friend std::ostream& operator<<(std::ostream &s, const Parameter &p); static double compute_T60(double _D1, double _G1, double _GC, double _G); static double compute_ED(double _D1, double _DA); static double compute_C(double _G1, double _GC, double _G); static double compute_TC(double _D1, double _G1, double _DA); static double compute_SC(double _GC, double _SR); /* * Functions used in computing the inverse mapping/ */ static double TC_G1_D1_ED(double _D1, double _G1, double _ED, double t=0.1); static double T60_D1_G1_C(double _D1, double _G1, double _GC, double _C); static double D1_G1_T60_C(double _G1, double _GC, double _T60, double _C); static double G_G1_C(double _G1, double _GC, double _C); static double DA_D1_ED(double _D1, double _ED, double t=0.1); /* * Function to minimize. */ static double GC_SC(double _SC, double SR); static double errorfunc(double _G1, double _GC, const matrix<double, 4, 1> &Target); static matrix <double, 5, 1> inverse_mapping(double _T60, double _ED, double _C, double _TC, double _SC, double SampleRate, double _G1); public: Parameter(double SR=44100.0, double _D1 = 0.05, double _DA = 0.006, double _G1 = 0.5, double _GC = 0.5, double _G = 0.5, double _T60 = 0.423289, double _ED = 6927.08, double _C = -0.107798, double _TC = 0.0490677, double _SC = 6419.15 ); virtual ~Parameter(); double getC() const; void setC(double c); double getD1() const; void setD1(double d1); double getDa() const; void setDa(double da); double getEd() const; void setEd(double ed); double getG() const; void setG(double g); double getG1() const; void setG1(double g1); double getGc() const; void setGc(double gc); double getSampleRate() const; void setSampleRate(double sampleRate); double getSc() const; void setSc(double sc); double getT60() const; void setT60(double t60); double getTc() const; void setTc(double tc); /* compute functions */ /* * Low level -> High level */ int set_low_and_compute(double D1, double DA, double G1, double GC, double G); int get_low_and_computer(); /* * High level -> Low level */ int set_high_and_compute(double T60, double ED, double C, double TC, double SC); int get_high_and_compute(); }; #endif /* PARAMETER_H_ */