Gist
Yin.h
Go to the documentation of this file.
1 //=======================================================================
22 //=======================================================================
23 
24 #ifndef __GIST__YIN__
25 #define __GIST__YIN__
26 
27 #include <vector>
28 #include <cmath>
29 
30 //===========================================================
34 template <class T>
35 class Yin
36 {
37 
38 public:
39 
40  //===========================================================
44  Yin (int samplingFrequency);
45 
46  //===========================================================
50  void setSamplingFrequency (int samplingFrequency);
51 
55  void setMaxFrequency (T maxFreq);
56 
57  //===========================================================
60  {
61  return ((T) fs) / ((T) minPeriod);
62  }
63 
64  //===========================================================
69  T pitchYin (const std::vector<T>& frame);
70 
71 private:
72 
73  //===========================================================
78  T periodToPitch (T period);
79 
86  long searchForOtherRecentMinima (const std::vector<T>& delta);
87 
95  T parabolicInterpolation (unsigned long period,T y1,T y2,T y3);
96 
101  unsigned long getPeriodCandidate (const std::vector<T>& delta);
102 
107  void cumulativeMeanNormalisedDifferenceFunction (const std::vector<T>& frame);
108 
109  T round (T val)
110  {
111  return floor(val + 0.5);
112  }
113 
115  T prevPeriodEstimate;
116 
118  int fs;
119 
121  int minPeriod;
122 
123  std::vector<T> delta;
124 };
125 
126 #endif
Yin::setSamplingFrequency
void setSamplingFrequency(int samplingFrequency)
Definition: Yin.cpp:37
Yin::getMaxFrequency
T getMaxFrequency()
Definition: Yin.h:59
Yin
Definition: Yin.h:36
Yin::Yin
Yin(int samplingFrequency)
Definition: Yin.cpp:28
Yin::setMaxFrequency
void setMaxFrequency(T maxFreq)
Definition: Yin.cpp:46
Yin::pitchYin
T pitchYin(const std::vector< T > &frame)
Definition: Yin.cpp:61