Mercurial > hg > pyin
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 |