Mercurial > hg > tony
diff 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 |
line wrap: on
line diff
--- a/src/Analyser.cpp Wed Mar 11 12:20:06 2015 +0000 +++ b/src/Analyser.cpp Mon Mar 23 10:33:32 2015 +0000 @@ -374,7 +374,7 @@ if (lowamp) { cerr << "setting parameters for lowamp suppression" << endl; - t.setParameter("lowampsuppression", 0.2f); + t.setParameter("lowampsuppression", 0.1f); } else { cerr << "setting parameters for no lowamp suppression" << endl; t.setParameter("lowampsuppression", 0.0f); @@ -408,9 +408,9 @@ pitchLayer->setBaseColour(cdb->getColourIndex(tr("Black"))); PlayParameters *params = pitchLayer->getPlayParameters(); if (params) params->setPlayPan(1); + connect(pitchLayer, SIGNAL(modelCompletionChanged()), + this, SLOT(layerCompletionChanged())); } - connect(pitchLayer, SIGNAL(modelCompletionChanged()), - this, SLOT(layerCompletionChanged())); FlexiNoteLayer *flexiNoteLayer = qobject_cast<FlexiNoteLayer *>(m_layers[Notes]); @@ -418,19 +418,47 @@ flexiNoteLayer->setBaseColour(cdb->getColourIndex(tr("Bright Blue"))); PlayParameters *params = flexiNoteLayer->getPlayParameters(); if (params) params->setPlayPan(1); + connect(flexiNoteLayer, SIGNAL(modelCompletionChanged()), + this, SLOT(layerCompletionChanged())); + connect(flexiNoteLayer, SIGNAL(reAnalyseRegion(int, int, float, float)), + this, SLOT(reAnalyseRegion(int, int, float, float))); + connect(flexiNoteLayer, SIGNAL(materialiseReAnalysis()), + this, SLOT(materialiseReAnalysis())); } - connect(flexiNoteLayer, SIGNAL(modelCompletionChanged()), - this, SLOT(layerCompletionChanged())); return ""; } +void +Analyser::reAnalyseRegion(int frame0, int frame1, float freq0, float freq1) +{ + cerr << "Analyser::reAnalyseRegion(" << frame0 << ", " << frame1 + << ", " << freq0 << ", " << freq1 << ")" << endl; + showPitchCandidates(true); + (void)reAnalyseSelection(Selection(frame0, frame1), + FrequencyRange(freq0, freq1)); +} + +void +Analyser::materialiseReAnalysis() +{ + if (m_reAnalysingSelection.isEmpty()) return; + switchPitchCandidate(m_reAnalysingSelection, true); // or false, doesn't matter +} + QString Analyser::reAnalyseSelection(Selection sel, FrequencyRange range) { QMutexLocker locker(&m_asyncMutex); - if (sel == m_reAnalysingSelection || sel.isEmpty()) return ""; + if (!m_reAnalysingSelection.isEmpty()) { + if (sel == m_reAnalysingSelection && range == m_reAnalysingRange) { + cerr << "selection & range are same as current analysis, ignoring" << endl; + return ""; + } + } + + if (sel.isEmpty()) return ""; if (m_currentAsyncHandle) { m_document->cancelAsyncLayerCreation(m_currentAsyncHandle); @@ -444,6 +472,7 @@ } m_reAnalysingSelection = sel; + m_reAnalysingRange = range; m_preAnalysis = Clipboard(); Layer *myLayer = m_layers[PitchTrack];