108 {
109
112
113
114 const float normFactor = 1.0f / 32768.0f;
115
116
117
119 float sum = 0.0f;
120 int validSamples = 0;
121
122 for (size i = 0; i + lag < numSamples; i++) {
123 float s1 = static_cast<float>(pcm[i]) * normFactor;
124 float s2 = static_cast<float>(pcm[i + lag]) * normFactor;
125 sum += s1 * s2;
126 validSamples++;
127 }
128
129
130 if (validSamples > 0) {
131 mAutocorrelation[
static_cast<size
>(lag)] = sum /
static_cast<float>(validSamples);
132 }
133 }
134
135
137
138
139 if (bestLag > 0) {
141
142
144 }
145
146
148 return 0.0f;
149}
vector< float > mAutocorrelation
float calculateConfidence(const vector< float > &autocorr, int peakLag) const FL_NO_EXCEPT
float periodToFrequency(int period) const FL_NO_EXCEPT
int findBestPeakLag(const vector< float > &autocorr) const FL_NO_EXCEPT