diff Agent.cpp @ 12:59520cd6abac

Debug output, and some actual debugging... getting there.
author Chris Cannam
date Thu, 06 Oct 2011 15:21:03 +0100
parents 4f6626f9ffac
children 0d4048bfadbb
line wrap: on
line diff
--- a/Agent.cpp	Fri Sep 30 23:11:14 2011 +0100
+++ b/Agent.cpp	Thu Oct 06 15:21:03 2011 +0100
@@ -34,20 +34,35 @@
 bool Agent::considerAsBeat(Event e, AgentList &a) {
     double err;
     if (beatTime < 0) {	// first event
+#ifdef DEBUG_BEATROOT
+        std::cerr << "Ag#" << idNumber << ": accepting first event trivially at " << e.time << std::endl;
+#endif
 	accept(e, 0, 1);
 	return true;
     } else {			// subsequent events
         EventList::iterator last = events.end();
         --last;
 	if (e.time - last->time > expiryTime) {
+#ifdef DEBUG_BEATROOT
+            std::cerr << "Ag#" << idNumber << ": time " << e.time 
+                      << " too late relative to " << last->time << " (expiry "
+                      << expiryTime << "), giving up" << std::endl;
+#endif
 	    phaseScore = -1.0;	// flag agent to be deleted
 	    return false;
 	}
 	double beats = nearbyint((e.time - beatTime) / beatInterval);
 	err = e.time - beatTime - beats * beatInterval;
+#ifdef DEBUG_BEATROOT
+        std::cerr << "Ag#" << idNumber << ": time " << e.time << ", err " << err << " for beats " << beats << std::endl;
+#endif
 	if ((beats > 0) && (-preMargin <= err) && (err <= postMargin)) {
-	    if (fabs(err) > innerMargin)	// Create new agent that skips this
-		a.add(Agent(*this));	//  event (avoids large phase jump)
+	    if (fabs(err) > innerMargin) {	// Create new agent that skips this
+#ifdef DEBUG_BEATROOT
+                std::cerr << "Ag#" << idNumber << ": creating another new agent" << std::endl;
+#endif
+		a.add(clone());	//  event (avoids large phase jump)
+            }
 	    accept(e, err, (int)beats);
 	    return true;
 	}