diff align/MATCHAligner.cpp @ 781:b651dc5ff555

Add subsequence option all over the place
author Chris Cannam
date Thu, 16 Jul 2020 18:01:50 +0100
parents 87d33e79855b
children
line wrap: on
line diff
--- a/align/MATCHAligner.cpp	Wed Jul 01 15:34:46 2020 +0100
+++ b/align/MATCHAligner.cpp	Thu Jul 16 18:01:50 2020 +0100
@@ -30,10 +30,12 @@
 MATCHAligner::MATCHAligner(Document *doc,
                            ModelId reference,
                            ModelId toAlign,
+                           bool subsequence,
                            bool withTuningDifference) :
     m_document(doc),
     m_reference(reference),
     m_toAlign(toAlign),
+    m_subsequence(subsequence),
     m_withTuningDifference(withTuningDifference),
     m_tuningFrequency(440.f),
     m_incomplete(true)
@@ -55,13 +57,20 @@
 }
 
 QString
-MATCHAligner::getAlignmentTransformName()
+MATCHAligner::getAlignmentTransformName(bool subsequence)
 {
     QSettings settings;
     settings.beginGroup("Alignment");
-    TransformId id = settings.value
-        ("transform-id",
-         "vamp:match-vamp-plugin:match:path").toString();
+    TransformId id;
+    if (subsequence) {
+        id = settings.value
+            ("transform-id-subsequence",
+             "vamp:match-vamp-plugin:match-subsequence:path").toString();
+    } else {
+        id = settings.value
+            ("transform-id",
+             "vamp:match-vamp-plugin:match:path").toString();
+    }
     settings.endGroup();
     return id;
 }
@@ -83,9 +92,11 @@
 MATCHAligner::isAvailable()
 {
     TransformFactory *factory = TransformFactory::getInstance();
-    TransformId id = getAlignmentTransformName();
+    TransformId id = getAlignmentTransformName(false);
+    TransformId subId = getAlignmentTransformName(true);
     TransformId tdId = getTuningDifferenceTransformName();
     return factory->haveTransform(id) &&
+        (subId == "" || factory->haveTransform(subId)) &&
         (tdId == "" || factory->haveTransform(tdId));
 }
 
@@ -267,7 +278,7 @@
 bool
 MATCHAligner::beginAlignmentPhase()
 {
-    TransformId id = getAlignmentTransformName();
+    TransformId id = getAlignmentTransformName(m_subsequence);
     
     SVDEBUG << "MATCHAligner::beginAlignmentPhase: transform is "
             << id << endl;