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);