comparison 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
comparison
equal deleted inserted replaced
11:7169eb47b1bc 12:59520cd6abac
32 double Agent::decayFactor = 0.0; 32 double Agent::decayFactor = 0.0;
33 33
34 bool Agent::considerAsBeat(Event e, AgentList &a) { 34 bool Agent::considerAsBeat(Event e, AgentList &a) {
35 double err; 35 double err;
36 if (beatTime < 0) { // first event 36 if (beatTime < 0) { // first event
37 #ifdef DEBUG_BEATROOT
38 std::cerr << "Ag#" << idNumber << ": accepting first event trivially at " << e.time << std::endl;
39 #endif
37 accept(e, 0, 1); 40 accept(e, 0, 1);
38 return true; 41 return true;
39 } else { // subsequent events 42 } else { // subsequent events
40 EventList::iterator last = events.end(); 43 EventList::iterator last = events.end();
41 --last; 44 --last;
42 if (e.time - last->time > expiryTime) { 45 if (e.time - last->time > expiryTime) {
46 #ifdef DEBUG_BEATROOT
47 std::cerr << "Ag#" << idNumber << ": time " << e.time
48 << " too late relative to " << last->time << " (expiry "
49 << expiryTime << "), giving up" << std::endl;
50 #endif
43 phaseScore = -1.0; // flag agent to be deleted 51 phaseScore = -1.0; // flag agent to be deleted
44 return false; 52 return false;
45 } 53 }
46 double beats = nearbyint((e.time - beatTime) / beatInterval); 54 double beats = nearbyint((e.time - beatTime) / beatInterval);
47 err = e.time - beatTime - beats * beatInterval; 55 err = e.time - beatTime - beats * beatInterval;
56 #ifdef DEBUG_BEATROOT
57 std::cerr << "Ag#" << idNumber << ": time " << e.time << ", err " << err << " for beats " << beats << std::endl;
58 #endif
48 if ((beats > 0) && (-preMargin <= err) && (err <= postMargin)) { 59 if ((beats > 0) && (-preMargin <= err) && (err <= postMargin)) {
49 if (fabs(err) > innerMargin) // Create new agent that skips this 60 if (fabs(err) > innerMargin) { // Create new agent that skips this
50 a.add(Agent(*this)); // event (avoids large phase jump) 61 #ifdef DEBUG_BEATROOT
62 std::cerr << "Ag#" << idNumber << ": creating another new agent" << std::endl;
63 #endif
64 a.add(clone()); // event (avoids large phase jump)
65 }
51 accept(e, err, (int)beats); 66 accept(e, err, (int)beats);
52 return true; 67 return true;
53 } 68 }
54 } 69 }
55 return false; 70 return false;