changeset 140:e7f2da26c9ac

Show warning if pitch-tracker plugin is not found (fixes #830)
author Chris Cannam
date Fri, 10 Jan 2014 14:37:05 +0000
parents 995478fbbe17
children 585fe1be1ac0
files src/Analyser.cpp src/Analyser.h src/MainWindow.cpp
diffstat 3 files changed, 21 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/src/Analyser.cpp	Fri Jan 10 14:18:37 2014 +0000
+++ b/src/Analyser.cpp	Fri Jan 10 14:37:05 2014 +0000
@@ -58,7 +58,7 @@
 {
 }
 
-void
+QString
 Analyser::newFileLoaded(Document *doc, WaveFileModel *model,
 			PaneStack *paneStack, Pane *pane)
 {
@@ -67,6 +67,7 @@
     m_paneStack = paneStack;
     m_pane = pane;
 
+    QString plugname = "pYIN";
     QString base = "vamp:pyin:pyin:";
     QString f0out = "smoothedpitchtrack";
     QString noteout = "notes";
@@ -108,9 +109,12 @@
     }
 */
 
-    if (!tf->haveTransform(base + f0out) || !tf->haveTransform(base + noteout)) {
-        std::cerr << "ERROR: Analyser::newFileLoaded: Transform unknown" << std::endl;
-	return;
+    QString notFound = tr("Transform \"%1\" not found. Unable to analyse audio file.<br><br>Is the %2 Vamp plugin correctly installed?");
+    if (!tf->haveTransform(base + f0out)) {
+	return notFound.arg(base + f0out).arg(plugname);
+    }
+    if (!tf->haveTransform(base + noteout)) {
+	return notFound.arg(base + noteout).arg(plugname);
     }
 
     Transform t = tf->getDefaultTransformFor
@@ -164,6 +168,8 @@
     loadState(Notes);
 
     emit layersChanged();
+
+    return "";
 }
 
 void
--- a/src/Analyser.h	Fri Jan 10 14:18:37 2014 +0000
+++ b/src/Analyser.h	Fri Jan 10 14:37:05 2014 +0000
@@ -36,8 +36,9 @@
     Analyser();
     virtual ~Analyser();
 
-    void newFileLoaded(Document *newDocument, WaveFileModel *model,
-		       PaneStack *paneStack, Pane *pane);
+    // Process new main model, add derived layers; return "" on success or error string on failure
+    QString newFileLoaded(Document *newDocument, WaveFileModel *model,
+                          PaneStack *paneStack, Pane *pane);
 		       
     void setIntelligentActions(bool);
 
--- a/src/MainWindow.cpp	Fri Jan 10 14:18:37 2014 +0000
+++ b/src/MainWindow.cpp	Fri Jan 10 14:37:05 2014 +0000
@@ -1609,8 +1609,15 @@
                                               ViewManager::SelectMode);
             }
             if (pane) {
-                m_analyser->newFileLoaded
+                QString error = m_analyser->newFileLoaded
                     (m_document, getMainModel(), m_paneStack, pane);
+                if (error != "") {
+                    QMessageBox::warning
+                        (this,
+                         tr("Failed to analyse audio"),
+                         tr("<b>Analysis failed</b><p>%1</p>").arg(error),
+                         QMessageBox::Ok);
+                }
             }
         }
     }