Mercurial > hg > tony
diff src/Analyser.cpp @ 572:3f0b44418a19 by-id
Toward using ModelById logic (incomplete)
author | Chris Cannam |
---|---|
date | Mon, 08 Jul 2019 14:12:08 +0100 |
parents | c6c8c1645ab6 |
children | 5c14493026da |
line wrap: on
line diff
--- a/src/Analyser.cpp Thu Jun 20 11:10:59 2019 +0100 +++ b/src/Analyser.cpp Mon Jul 08 14:12:08 2019 +0100 @@ -41,7 +41,6 @@ Analyser::Analyser() : m_document(0), - m_fileModel(0), m_paneStack(0), m_pane(0), m_currentCandidate(-1), @@ -69,7 +68,7 @@ } QString -Analyser::newFileLoaded(Document *doc, WaveFileModel *model, +Analyser::newFileLoaded(Document *doc, ModelId model, PaneStack *paneStack, Pane *pane) { m_document = doc; @@ -77,7 +76,9 @@ m_paneStack = paneStack; m_pane = pane; - if (!m_fileModel) return "Internal error: Analyser::newFileLoaded() called with no model present"; + if (!ModelById::isa<WaveFileModel>(m_fileModel)) { + return "Internal error: Analyser::newFileLoaded() called with no model, or a non-WaveFileModel"; + } connect(doc, SIGNAL(layerAboutToBeDeleted(Layer *)), this, SLOT(layerAboutToBeDeleted(Layer *))); @@ -97,7 +98,7 @@ if (!m_pane) return "Internal error: Analyser::analyseExistingFile() called with no pane present"; - if (!m_fileModel) return "Internal error: Analyser::analyseExistingFile() called with no model present"; + if (m_fileModel.isNone()) return "Internal error: Analyser::analyseExistingFile() called with no model present"; if (m_layers[PitchTrack]) { m_document->removeLayerFromView(m_pane, m_layers[PitchTrack]); @@ -229,7 +230,7 @@ QString Analyser::addVisualisations() { - if (!m_fileModel) return "Internal error: Analyser::addVisualisations() called with no model present"; + if (m_fileModel.isNone()) return "Internal error: Analyser::addVisualisations() called with no model present"; // A spectrogram, off by default. Must go at the back because it's // opaque @@ -329,6 +330,11 @@ QString Analyser::addAnalyses() { + auto waveFileModel = ModelById::getAs<WaveFileModel>(m_fileModel); + if (!waveFileModel) { + return "Internal error: Analyser::addAnalyses() called with no model present"; + } + // As with the spectrogram above, if these layers exist we use // them TimeValueLayer *existingPitch = 0; @@ -395,7 +401,7 @@ settings.endGroup(); Transform t = tf->getDefaultTransformFor - (base + f0out, m_fileModel->getSampleRate()); + (base + f0out, waveFileModel->getSampleRate()); t.setStepSize(256); t.setBlockSize(2048); @@ -508,6 +514,11 @@ { QMutexLocker locker(&m_asyncMutex); + auto waveFileModel = ModelById::getAs<WaveFileModel>(m_fileModel); + if (!waveFileModel) { + return "Internal error: Analyser::reAnalyseSelection() called with no model present"; + } + if (!m_reAnalysingSelection.isEmpty()) { if (sel == m_reAnalysingSelection && range == m_reAnalysingRange) { cerr << "selection & range are same as current analysis, ignoring" << endl; @@ -558,7 +569,7 @@ } Transform t = tf->getDefaultTransformFor - (base + out, m_fileModel->getSampleRate()); + (base + out, waveFileModel->getSampleRate()); t.setStepSize(256); t.setBlockSize(2048); @@ -580,8 +591,8 @@ } else { endSample -= 9*grid; // MM says: not sure what the CHP plugin does there } - RealTime start = RealTime::frame2RealTime(startSample, m_fileModel->getSampleRate()); - RealTime end = RealTime::frame2RealTime(endSample, m_fileModel->getSampleRate()); + RealTime start = RealTime::frame2RealTime(startSample, waveFileModel->getSampleRate()); + RealTime end = RealTime::frame2RealTime(endSample, waveFileModel->getSampleRate()); RealTime duration; @@ -602,7 +613,7 @@ transforms.push_back(t); m_currentAsyncHandle = - m_document->createDerivedLayersAsync(transforms, m_fileModel, this); + m_document->createDerivedLayersAsync(transforms, ModelId, this); return ""; }