Mercurial > hg > tony
diff src/Analyser.cpp @ 165:ebcfb8dce020
Replace previous candidates when making a new analysis. Also revert to built-in spectrogram for now (CQ is still pending)
author | Chris Cannam |
---|---|
date | Fri, 31 Jan 2014 17:54:49 +0000 |
parents | 62ceae757fe0 |
children | 6b6906017536 |
line wrap: on
line diff
--- a/src/Analyser.cpp Thu Jan 30 17:33:55 2014 +0000 +++ b/src/Analyser.cpp Fri Jan 31 17:54:49 2014 +0000 @@ -72,6 +72,9 @@ m_paneStack = paneStack; m_pane = pane; + m_reAnalysingSelection = Selection(); + m_reAnalysisCandidates.clear(); + // Note that we need at least one main-model layer (time ruler, // waveform or what have you). It could be hidden if we don't want // to see it but it must exist. @@ -99,14 +102,9 @@ } QString -Analyser::reAnalyseSelection(Selection sel) -{ - return addTestCandidates(sel); -} - -QString Analyser::addVisualisations() { +/* TransformFactory *tf = TransformFactory::getInstance(); QString name = "Constant-Q"; @@ -129,15 +127,16 @@ (m_document->createDerivedLayer(transform, m_fileModel)); if (!spectrogram) return tr("Transform \"%1\" did not run correctly (no layer or wrong layer type returned)").arg(base + out); - -/* +*/ + SpectrogramLayer *spectrogram = qobject_cast<SpectrogramLayer *> (m_document->createMainModelLayer(LayerFactory::MelodicRangeSpectrogram)); -*/ + spectrogram->setColourMap((int)ColourMapper::BlackOnWhite); spectrogram->setNormalizeHybrid(true); - spectrogram->setSmooth(true); - spectrogram->setGain(0.5); //!!! arbitrary at this point +// spectrogram->setSmooth(true); +// spectrogram->setGain(0.5); //!!! arbitrary at this point + spectrogram->setGain(100); m_document->addLayerToView(m_pane, spectrogram); spectrogram->setLayerDormant(m_pane, true); @@ -247,8 +246,18 @@ } QString -Analyser::addTestCandidates(Selection sel) +Analyser::reAnalyseSelection(Selection sel) { + if (sel == m_reAnalysingSelection) return ""; + + foreach (Layer *layer, m_reAnalysisCandidates) { + cerr << "deleting previous candidate layer " << layer << endl; + m_pane->removeLayer(layer); + m_document->deleteLayer(layer); // also releases its model + } + m_reAnalysisCandidates.clear(); + m_reAnalysingSelection = sel; + TransformFactory *tf = TransformFactory::getInstance(); QString plugname = "pYIN"; @@ -293,14 +302,23 @@ Analyser::layersCreated(vector<Layer *> primary, vector<Layer *> additional) { + //!!! how do we know these came from the right selection? user + //!!! might have made another one since this request was issued + for (int i = 0; i < (int)primary.size(); ++i) { TimeValueLayer *t = qobject_cast<TimeValueLayer *>(primary[i]); - if (t) m_document->addLayerToView(m_pane, t); + if (t) { + m_document->addLayerToView(m_pane, t); + m_reAnalysisCandidates.push_back(t); + } } for (int i = 0; i < (int)additional.size(); ++i) { TimeValueLayer *t = qobject_cast<TimeValueLayer *>(additional[i]); - if (t) m_document->addLayerToView(m_pane, t); + if (t) { + m_document->addLayerToView(m_pane, t); + m_reAnalysisCandidates.push_back(t); + } } }