comparison Yin.cpp @ 60:60eb8771d340 tony

slower, but timestamp-unbiased pyin
author matthiasm
date Fri, 07 Mar 2014 10:43:55 +0000
parents 619c01e3467e
children d501b52f95b6
comparison
equal deleted inserted replaced
59:b13d82111c8f 60:60eb8771d340
45 Yin::process(const double *in) const { 45 Yin::process(const double *in) const {
46 46
47 double* yinBuffer = new double[m_yinBufferSize]; 47 double* yinBuffer = new double[m_yinBufferSize];
48 48
49 // calculate aperiodicity function for all periods 49 // calculate aperiodicity function for all periods
50 YinUtil::fastDifference(in, yinBuffer, m_yinBufferSize); 50 YinUtil::slowDifference(in, yinBuffer, m_yinBufferSize);
51 YinUtil::cumulativeDifference(yinBuffer, m_yinBufferSize); 51 YinUtil::cumulativeDifference(yinBuffer, m_yinBufferSize);
52 52
53 int tau = 0; 53 int tau = 0;
54 tau = YinUtil::absoluteThreshold(yinBuffer, m_yinBufferSize, m_thresh); 54 tau = YinUtil::absoluteThreshold(yinBuffer, m_yinBufferSize, m_thresh);
55 55
84 Yin::processProbabilisticYin(const double *in) const { 84 Yin::processProbabilisticYin(const double *in) const {
85 85
86 double* yinBuffer = new double[m_yinBufferSize]; 86 double* yinBuffer = new double[m_yinBufferSize];
87 87
88 // calculate aperiodicity function for all periods 88 // calculate aperiodicity function for all periods
89 YinUtil::fastDifference(in, yinBuffer, m_yinBufferSize); 89 YinUtil::slowDifference(in, yinBuffer, m_yinBufferSize);
90 YinUtil::cumulativeDifference(yinBuffer, m_yinBufferSize); 90 YinUtil::cumulativeDifference(yinBuffer, m_yinBufferSize);
91 91
92 vector<double> peakProbability = YinUtil::yinProb(yinBuffer, m_threshDistr, m_yinBufferSize); 92 vector<double> peakProbability = YinUtil::yinProb(yinBuffer, m_threshDistr, m_yinBufferSize);
93 93
94 // basic yin output 94 // basic yin output
149 Yin::constrainedMinPick(const double *in, const float minFreq, const int maxFreq) const { 149 Yin::constrainedMinPick(const double *in, const float minFreq, const int maxFreq) const {
150 150
151 double* yinBuffer = new double[m_yinBufferSize]; 151 double* yinBuffer = new double[m_yinBufferSize];
152 152
153 // calculate aperiodicity function for all periods 153 // calculate aperiodicity function for all periods
154 YinUtil::fastDifference(in, yinBuffer, m_yinBufferSize); 154 YinUtil::slowDifference(in, yinBuffer, m_yinBufferSize);
155 YinUtil::cumulativeDifference(yinBuffer, m_yinBufferSize); 155 YinUtil::cumulativeDifference(yinBuffer, m_yinBufferSize);
156 156
157 int minPeriod = m_inputSampleRate / maxFreq; 157 int minPeriod = m_inputSampleRate / maxFreq;
158 int maxPeriod = m_inputSampleRate / minFreq; 158 int maxPeriod = m_inputSampleRate / minFreq;
159 159