Mercurial > hg > tony
diff src/Analyser.cpp @ 326:b176ea403ee8
Connect up the auto-analysis and precision analysis settings
author | Chris Cannam |
---|---|
date | Fri, 13 Jun 2014 14:47:44 +0100 |
parents | ef75afbe4c67 |
children | 6b57c58b88d2 |
line wrap: on
line diff
--- a/src/Analyser.cpp Fri Jun 13 14:36:30 2014 +0100 +++ b/src/Analyser.cpp Fri Jun 13 14:47:44 2014 +0100 @@ -78,7 +78,12 @@ connect(doc, SIGNAL(layerAboutToBeDeleted(Layer *)), this, SLOT(layerAboutToBeDeleted(Layer *))); - return doAllAnalyses(); + QSettings settings; + settings.beginGroup("Analyser"); + bool autoAnalyse = settings.value("auto-analysis", true).toBool(); + settings.endGroup(); + + return doAllAnalyses(autoAnalyse); } QString @@ -97,11 +102,11 @@ m_layers[Notes] = 0; } - return doAllAnalyses(); + return doAllAnalyses(true); } QString -Analyser::doAllAnalyses() +Analyser::doAllAnalyses(bool withPitchTrack) { m_reAnalysingSelection = Selection(); m_reAnalysisCandidates.clear(); @@ -123,8 +128,10 @@ error = addWaveform(); if (error != "") return error; - error = addAnalyses(); - if (error != "") return error; + if (withPitchTrack) { + error = addAnalyses(); + if (error != "") return error; + } loadState(Audio); loadState(PitchTrack); @@ -301,8 +308,15 @@ m_layers[PitchTrack] = existingPitch; m_layers[Notes] = existingNotes; return ""; - } else if (existingPitch || existingNotes) { - return "One (but not both) of pitch and note track found in session"; + } else { + if (existingPitch) { + m_document->removeLayerFromView(m_pane, existingPitch); + m_layers[PitchTrack] = 0; + } + if (existingNotes) { + m_document->removeLayerFromView(m_pane, existingNotes); + m_layers[Notes] = 0; + } } TransformFactory *tf = TransformFactory::getInstance(); @@ -334,11 +348,24 @@ return notFound.arg(base + noteout).arg(plugname); } + QSettings settings; + settings.beginGroup("Analyser"); + bool precise = settings.value("precision-analysis", false).toBool(); + settings.endGroup(); + Transform t = tf->getDefaultTransformFor (base + f0out, m_fileModel->getSampleRate()); t.setStepSize(256); t.setBlockSize(2048); + if (precise) { + cerr << "setting parameters for precise mode" << endl; + t.setParameter("precisetime", 1); + } else { + cerr << "setting parameters for vague mode" << endl; + t.setParameter("precisetime", 0); + } + transforms.push_back(t); t.setOutput(noteout);