Mercurial > hg > tony
comparison src/Analyser.cpp @ 402:a0eedd10dee3 cxx11-types
Merge from default branch
author | Chris Cannam |
---|---|
date | Mon, 23 Mar 2015 10:33:32 +0000 |
parents | ffd1a89a68fa 6f7133733032 |
children | cc33cdb114f6 |
comparison
equal
deleted
inserted
replaced
400:4b9b7ff3f19c | 402:a0eedd10dee3 |
---|---|
372 t.setParameter("precisetime", 0); | 372 t.setParameter("precisetime", 0); |
373 } | 373 } |
374 | 374 |
375 if (lowamp) { | 375 if (lowamp) { |
376 cerr << "setting parameters for lowamp suppression" << endl; | 376 cerr << "setting parameters for lowamp suppression" << endl; |
377 t.setParameter("lowampsuppression", 0.2f); | 377 t.setParameter("lowampsuppression", 0.1f); |
378 } else { | 378 } else { |
379 cerr << "setting parameters for no lowamp suppression" << endl; | 379 cerr << "setting parameters for no lowamp suppression" << endl; |
380 t.setParameter("lowampsuppression", 0.0f); | 380 t.setParameter("lowampsuppression", 0.0f); |
381 } | 381 } |
382 | 382 |
406 qobject_cast<TimeValueLayer *>(m_layers[PitchTrack]); | 406 qobject_cast<TimeValueLayer *>(m_layers[PitchTrack]); |
407 if (pitchLayer) { | 407 if (pitchLayer) { |
408 pitchLayer->setBaseColour(cdb->getColourIndex(tr("Black"))); | 408 pitchLayer->setBaseColour(cdb->getColourIndex(tr("Black"))); |
409 PlayParameters *params = pitchLayer->getPlayParameters(); | 409 PlayParameters *params = pitchLayer->getPlayParameters(); |
410 if (params) params->setPlayPan(1); | 410 if (params) params->setPlayPan(1); |
411 } | 411 connect(pitchLayer, SIGNAL(modelCompletionChanged()), |
412 connect(pitchLayer, SIGNAL(modelCompletionChanged()), | 412 this, SLOT(layerCompletionChanged())); |
413 this, SLOT(layerCompletionChanged())); | 413 } |
414 | 414 |
415 FlexiNoteLayer *flexiNoteLayer = | 415 FlexiNoteLayer *flexiNoteLayer = |
416 qobject_cast<FlexiNoteLayer *>(m_layers[Notes]); | 416 qobject_cast<FlexiNoteLayer *>(m_layers[Notes]); |
417 if (flexiNoteLayer) { | 417 if (flexiNoteLayer) { |
418 flexiNoteLayer->setBaseColour(cdb->getColourIndex(tr("Bright Blue"))); | 418 flexiNoteLayer->setBaseColour(cdb->getColourIndex(tr("Bright Blue"))); |
419 PlayParameters *params = flexiNoteLayer->getPlayParameters(); | 419 PlayParameters *params = flexiNoteLayer->getPlayParameters(); |
420 if (params) params->setPlayPan(1); | 420 if (params) params->setPlayPan(1); |
421 } | 421 connect(flexiNoteLayer, SIGNAL(modelCompletionChanged()), |
422 connect(flexiNoteLayer, SIGNAL(modelCompletionChanged()), | 422 this, SLOT(layerCompletionChanged())); |
423 this, SLOT(layerCompletionChanged())); | 423 connect(flexiNoteLayer, SIGNAL(reAnalyseRegion(int, int, float, float)), |
424 this, SLOT(reAnalyseRegion(int, int, float, float))); | |
425 connect(flexiNoteLayer, SIGNAL(materialiseReAnalysis()), | |
426 this, SLOT(materialiseReAnalysis())); | |
427 } | |
424 | 428 |
425 return ""; | 429 return ""; |
430 } | |
431 | |
432 void | |
433 Analyser::reAnalyseRegion(int frame0, int frame1, float freq0, float freq1) | |
434 { | |
435 cerr << "Analyser::reAnalyseRegion(" << frame0 << ", " << frame1 | |
436 << ", " << freq0 << ", " << freq1 << ")" << endl; | |
437 showPitchCandidates(true); | |
438 (void)reAnalyseSelection(Selection(frame0, frame1), | |
439 FrequencyRange(freq0, freq1)); | |
440 } | |
441 | |
442 void | |
443 Analyser::materialiseReAnalysis() | |
444 { | |
445 if (m_reAnalysingSelection.isEmpty()) return; | |
446 switchPitchCandidate(m_reAnalysingSelection, true); // or false, doesn't matter | |
426 } | 447 } |
427 | 448 |
428 QString | 449 QString |
429 Analyser::reAnalyseSelection(Selection sel, FrequencyRange range) | 450 Analyser::reAnalyseSelection(Selection sel, FrequencyRange range) |
430 { | 451 { |
431 QMutexLocker locker(&m_asyncMutex); | 452 QMutexLocker locker(&m_asyncMutex); |
432 | 453 |
433 if (sel == m_reAnalysingSelection || sel.isEmpty()) return ""; | 454 if (!m_reAnalysingSelection.isEmpty()) { |
455 if (sel == m_reAnalysingSelection && range == m_reAnalysingRange) { | |
456 cerr << "selection & range are same as current analysis, ignoring" << endl; | |
457 return ""; | |
458 } | |
459 } | |
460 | |
461 if (sel.isEmpty()) return ""; | |
434 | 462 |
435 if (m_currentAsyncHandle) { | 463 if (m_currentAsyncHandle) { |
436 m_document->cancelAsyncLayerCreation(m_currentAsyncHandle); | 464 m_document->cancelAsyncLayerCreation(m_currentAsyncHandle); |
437 } | 465 } |
438 | 466 |
442 discardPitchCandidates(); | 470 discardPitchCandidates(); |
443 CommandHistory::getInstance()->endCompoundOperation(); | 471 CommandHistory::getInstance()->endCompoundOperation(); |
444 } | 472 } |
445 | 473 |
446 m_reAnalysingSelection = sel; | 474 m_reAnalysingSelection = sel; |
475 m_reAnalysingRange = range; | |
447 | 476 |
448 m_preAnalysis = Clipboard(); | 477 m_preAnalysis = Clipboard(); |
449 Layer *myLayer = m_layers[PitchTrack]; | 478 Layer *myLayer = m_layers[PitchTrack]; |
450 if (myLayer) { | 479 if (myLayer) { |
451 myLayer->copy(m_pane, sel, m_preAnalysis); | 480 myLayer->copy(m_pane, sel, m_preAnalysis); |