diff src/Analyser.cpp @ 164:62ceae757fe0

Re-analyse frames when selection changes (this only pulls up a set of new candidates for now, can't do anything with them and the old ones are never removed)
author Chris Cannam
date Thu, 30 Jan 2014 17:33:55 +0000
parents ec196bd2f068
children ebcfb8dce020
line wrap: on
line diff
--- a/src/Analyser.cpp	Wed Jan 29 17:34:28 2014 +0000
+++ b/src/Analyser.cpp	Thu Jan 30 17:33:55 2014 +0000
@@ -88,9 +88,6 @@
     error = addAnalyses();
     if (error != "") return error;
 
-    error = addTestCandidates();
-    if (error != "") return error;
-
     loadState(Audio);
     loadState(PitchTrack);
     loadState(Notes);
@@ -102,6 +99,12 @@
 }
 
 QString
+Analyser::reAnalyseSelection(Selection sel)
+{
+    return addTestCandidates(sel);
+}
+
+QString
 Analyser::addVisualisations()
 {
     TransformFactory *tf = TransformFactory::getInstance();
@@ -244,7 +247,7 @@
 }
 
 QString
-Analyser::addTestCandidates()
+Analyser::addTestCandidates(Selection sel)
 {
     TransformFactory *tf = TransformFactory::getInstance();
     
@@ -264,8 +267,20 @@
     t.setStepSize(256);
     t.setBlockSize(2048);
 
-    t.setStartTime(RealTime::fromSeconds(10.785));
-    t.setDuration(RealTime::fromSeconds(1.2));
+    RealTime start = RealTime::frame2RealTime
+        (sel.getStartFrame(), m_fileModel->getSampleRate());
+
+    RealTime end = RealTime::frame2RealTime
+        (sel.getEndFrame(), m_fileModel->getSampleRate());
+
+    RealTime duration;
+
+    if (sel.getEndFrame() > sel.getStartFrame()) {
+        duration = end - start;
+    }
+
+    t.setStartTime(start);
+    t.setDuration(duration);
 
     transforms.push_back(t);