changeset 107:1ffa08f9df26

Fixes to peak diff display
author Chris Cannam <c.cannam@qmul.ac.uk>
date Wed, 14 May 2014 11:23:02 +0100
parents 0a089d7d162d
children e034798ab110
files cpp-qm-dsp/processfile.cpp
diffstat 1 files changed, 17 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/cpp-qm-dsp/processfile.cpp	Wed May 14 11:22:51 2014 +0100
+++ b/cpp-qm-dsp/processfile.cpp	Wed May 14 11:23:02 2014 +0100
@@ -200,10 +200,14 @@
 	if (doDiff) {
 	    for (int i = 0; i < (int)cqout.size(); ++i) {
 		if (outframe + i >= latency) {
-		    cqout[i] -= buffer[outframe + i - latency];
-		    if (fabs(cqout[i]) > maxdiff) {
+		    int dframe = outframe + i - latency;
+		    if (dframe >= (int)buffer.size()) cqout[i] = 0;
+		    else cqout[i] -= buffer[dframe];
+		    if (fabs(cqout[i]) > maxdiff &&
+			dframe > sfinfo.samplerate && // ignore first/last sec
+			dframe + sfinfo.samplerate < sfinfo.frames) {
 			maxdiff = fabs(cqout[i]);
-			maxdiffidx = outframe + i - latency;
+			maxdiffidx = dframe;
 		    }
 		}
 	    }
@@ -241,10 +245,14 @@
     if (doDiff) {
 	for (int i = 0; i < (int)r.size(); ++i) {
 	    if (outframe + i >= latency) {
-		r[i] -= buffer[outframe + i - latency];
-		if (fabs(r[i]) > maxdiff) {
+		int dframe = outframe + i - latency;
+		if (dframe >= (int)buffer.size()) r[i] = 0;
+		else r[i] -= buffer[dframe];
+		if (fabs(r[i]) > maxdiff &&
+		    dframe > sfinfo.samplerate && // ignore first/last sec
+		    dframe + sfinfo.samplerate < sfinfo.frames) {
 		    maxdiff = fabs(r[i]);
-		    maxdiffidx = outframe + i - latency;
+		    maxdiffidx = dframe;
 		}
 	    }
 	}
@@ -262,7 +270,9 @@
     cerr << "in: " << inframe << ", out: " << outframe - latency << endl;
 
     if (doDiff) {
-	cerr << "max diff is " << maxdiff
+	double db = 10 * log10(maxdiff);
+	cerr << "max diff [excluding first and last second of audio] is "
+	     << maxdiff << " (" << db << " dBFS)"
 	     << " at sample index " << maxdiffidx << endl;
     }