Revision 57:82b3cdf6ca6b
| AgentFeeder.h | ||
|---|---|---|
| 56 | 56 |
|
| 57 | 57 |
typedef std::vector<NoteHypothesis> Hypotheses; |
| 58 | 58 |
|
| 59 |
Hypotheses getAcceptedHypotheses() const {
|
|
| 59 |
const Hypotheses &getAcceptedHypotheses() const {
|
|
| 60 | 60 |
return m_accepted; |
| 61 | 61 |
} |
| 62 | 62 |
|
| CepstralPitchTracker.cpp | ||
|---|---|---|
| 53 | 53 |
m_binFrom(0), |
| 54 | 54 |
m_binTo(0), |
| 55 | 55 |
m_bins(0), |
| 56 |
m_nAccepted(0), |
|
| 56 | 57 |
m_feeder(0) |
| 57 | 58 |
{
|
| 58 | 59 |
} |
| ... | ... | |
| 243 | 244 |
{
|
| 244 | 245 |
delete m_feeder; |
| 245 | 246 |
m_feeder = new AgentFeeder(); |
| 247 |
m_nAccepted = 0; |
|
| 246 | 248 |
} |
| 247 | 249 |
|
| 248 | 250 |
void |
| ... | ... | |
| 268 | 270 |
fs[1].push_back(nf); |
| 269 | 271 |
} |
| 270 | 272 |
|
| 273 |
void |
|
| 274 |
CepstralPitchTracker::addNewFeatures(FeatureSet &fs) |
|
| 275 |
{
|
|
| 276 |
int n = m_feeder->getAcceptedHypotheses().size(); |
|
| 277 |
if (n == m_nAccepted) return; |
|
| 278 |
|
|
| 279 |
AgentFeeder::Hypotheses accepted = m_feeder->getAcceptedHypotheses(); |
|
| 280 |
|
|
| 281 |
for (int i = m_nAccepted; i < n; ++i) {
|
|
| 282 |
addFeaturesFrom(accepted[i], fs); |
|
| 283 |
} |
|
| 284 |
|
|
| 285 |
m_nAccepted = n; |
|
| 286 |
} |
|
| 287 |
|
|
| 271 | 288 |
CepstralPitchTracker::FeatureSet |
| 272 | 289 |
CepstralPitchTracker::process(const float *const *inputBuffers, RealTime timestamp) |
| 273 | 290 |
{
|
| 274 |
FeatureSet fs; |
|
| 275 |
|
|
| 276 | 291 |
double *rawcep = new double[m_blockSize]; |
| 277 | 292 |
double magmean = Cepstrum(m_blockSize).process(inputBuffers[0], rawcep); |
| 278 | 293 |
|
| ... | ... | |
| 295 | 310 |
|
| 296 | 311 |
if (maxbin < 0) {
|
| 297 | 312 |
delete[] data; |
| 298 |
return fs;
|
|
| 313 |
return FeatureSet();
|
|
| 299 | 314 |
} |
| 300 | 315 |
|
| 301 | 316 |
double nextPeakVal = 0.0; |
| ... | ... | |
| 321 | 336 |
// std::cerr << "magmean = " << magmean << ", confidence = " << confidence << std::endl; |
| 322 | 337 |
} |
| 323 | 338 |
|
| 339 |
delete[] data; |
|
| 340 |
|
|
| 324 | 341 |
NoteHypothesis::Estimate e; |
| 325 | 342 |
e.freq = peakfreq; |
| 326 | 343 |
e.time = timestamp; |
| ... | ... | |
| 328 | 345 |
|
| 329 | 346 |
m_feeder->feed(e); |
| 330 | 347 |
|
| 331 |
delete[] data; |
|
| 348 |
FeatureSet fs; |
|
| 349 |
addNewFeatures(fs); |
|
| 332 | 350 |
return fs; |
| 333 | 351 |
} |
| 334 | 352 |
|
| ... | ... | |
| 337 | 355 |
{
|
| 338 | 356 |
m_feeder->finish(); |
| 339 | 357 |
|
| 340 |
AgentFeeder::Hypotheses accepted = m_feeder->getAcceptedHypotheses(); |
|
| 341 |
|
|
| 342 | 358 |
FeatureSet fs; |
| 343 |
for (int i = 0; i < accepted.size(); ++i) {
|
|
| 344 |
addFeaturesFrom(accepted[i], fs); |
|
| 345 |
} |
|
| 359 |
addNewFeatures(fs); |
|
| 346 | 360 |
return fs; |
| 347 | 361 |
} |
| CepstralPitchTracker.h | ||
|---|---|---|
| 80 | 80 |
int m_binTo; |
| 81 | 81 |
int m_bins; // count of "interesting" bins, those returned in m_cepOutput |
| 82 | 82 |
|
| 83 |
int m_nAccepted; |
|
| 84 |
|
|
| 83 | 85 |
AgentFeeder *m_feeder; |
| 84 | 86 |
void addFeaturesFrom(NoteHypothesis h, FeatureSet &fs); |
| 87 |
void addNewFeatures(FeatureSet &fs); |
|
| 85 | 88 |
}; |
| 86 | 89 |
|
| 87 | 90 |
#endif |
Also available in: Unified diff