changeset 345:f3a9e4abec1b

added low amplitude suppression toggle to analysis menu
author matthiasm
date Mon, 16 Jun 2014 12:24:52 +0100
parents 6f545a46746b
children 65907d91f328
files .hgsubstate src/Analyser.cpp src/MainWindow.cpp src/MainWindow.h
diffstat 4 files changed, 39 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/.hgsubstate	Mon Jun 16 11:44:14 2014 +0100
+++ b/.hgsubstate	Mon Jun 16 12:24:52 2014 +0100
@@ -1,6 +1,6 @@
 e32a354434aa5fa7440efa17b716aacd761049fa chp
 236814e07bd07473958c1ff89103124536a0c3c8 dataquay
-27eee0f7a4f66b3dc39bc3c83d9c3f93f3845cc1 pyin
+062f0e49187789937b6162d2904b1af20872ed5e pyin
 553a5f65ef64811747a6613f759622d655db63c1 sv-dependency-builds
 f5c914661f6fdc7f05c2c980b0d21350d5933428 svapp
 85879408f6657f4076d73839d590c9fb80b78e73 svcore
--- a/src/Analyser.cpp	Mon Jun 16 11:44:14 2014 +0100
+++ b/src/Analyser.cpp	Mon Jun 16 12:24:52 2014 +0100
@@ -355,6 +355,10 @@
     bool precise = settings.value("precision-analysis", false).toBool();
     settings.endGroup();
 
+    settings.beginGroup("Analyser");
+    bool lowamp = settings.value("lowamp-analysis", false).toBool();
+    settings.endGroup();
+
     Transform t = tf->getDefaultTransformFor
         (base + f0out, m_fileModel->getSampleRate());
     t.setStepSize(256);
@@ -368,6 +372,14 @@
         t.setParameter("precisetime", 0);
     }
 
+    if (lowamp) {
+        cerr << "setting parameters for lowamp suppression" << endl;
+        t.setParameter("lowampsuppression", 0.2f);
+    } else {
+        cerr << "setting parameters for no lowamp suppression" << endl;
+        t.setParameter("lowampsuppression", 0.0f);
+    }
+
     transforms.push_back(t);
 
     t.setOutput(noteout);
--- a/src/MainWindow.cpp	Mon Jun 16 11:44:14 2014 +0100
+++ b/src/MainWindow.cpp	Mon Jun 16 12:24:52 2014 +0100
@@ -828,6 +828,7 @@
     settings.beginGroup("Analyser");
     bool autoAnalyse = settings.value("auto-analysis", true).toBool();
     bool precise = settings.value("precision-analysis", false).toBool();
+    bool lowamp = settings.value("lowamp-analysis", true).toBool();
     settings.endGroup();
 
     action = new QAction(tr("Auto-Analyse &New Audio"), this);
@@ -843,6 +844,14 @@
     action->setChecked(precise);
     connect(action, SIGNAL(triggered()), this, SLOT(precisionAnalysisToggled()));
     menu->addAction(action);
+
+    action = new QAction(tr("&Suppress Detection at Low Amplitude"), this);
+    action->setStatusTip(tr("Reduce the likelihood of detecting a pitch when the signal has low amplitude."));
+    action->setCheckable(true);
+    action->setChecked(lowamp);
+    connect(action, SIGNAL(triggered()), this, SLOT(lowampAnalysisToggled()));
+    menu->addAction(action);
+
 }
 
 void
@@ -876,6 +885,22 @@
 }
 
 void
+MainWindow::lowampAnalysisToggled()
+{
+    QAction *a = qobject_cast<QAction *>(sender());
+    if (!a) return;
+
+    bool set = a->isChecked();
+
+    QSettings settings;
+    settings.beginGroup("Analyser");
+    settings.setValue("lowamp-analysis", set);
+    settings.endGroup();
+
+    // don't run analyseNow() automatically -- it's a destructive operation
+}
+
+void
 MainWindow::setupHelpMenu()
 {
     QMenu *menu = menuBar()->addMenu(tr("&Help"));
--- a/src/MainWindow.h	Mon Jun 16 11:44:14 2014 +0100
+++ b/src/MainWindow.h	Mon Jun 16 12:24:52 2014 +0100
@@ -84,6 +84,7 @@
     virtual void analyseNow();
     virtual void autoAnalysisToggled();
     virtual void precisionAnalysisToggled();
+    virtual void lowampAnalysisToggled();
 
     virtual void doubleClickSelectInvoked(size_t);
     virtual void abandonSelection();