comparison Agent.cpp @ 8:f04f87b5e643

Add agent list class, and continue plodding through
author Chris Cannam
date Fri, 30 Sep 2011 11:37:25 +0100
parents 02d388f98c23
children 4f6626f9ffac
comparison
equal deleted inserted replaced
7:3c11becfc81a 8:f04f87b5e643
30 double Agent::outerMargin = 0.0; 30 double Agent::outerMargin = 0.0;
31 double Agent::correctionFactor = 0.0; 31 double Agent::correctionFactor = 0.0;
32 double Agent::expiryTime = 0.0; 32 double Agent::expiryTime = 0.0;
33 double Agent::decayFactor = 0.0; 33 double Agent::decayFactor = 0.0;
34 34
35 bool Agent::considerAsBeat(Event e, const AgentList &a) { 35 bool Agent::considerAsBeat(Event e, AgentList &a) {
36 double err; 36 double err;
37 if (beatTime < 0) { // first event 37 if (beatTime < 0) { // first event
38 accept(e, 0, 1); 38 accept(e, 0, 1);
39 return true; 39 return true;
40 } else { // subsequent events 40 } else { // subsequent events
41 if (e.keyDown - events.l.getLast().keyDown > expiryTime) { 41 if (e.time - events.l.getLast().keyDown > expiryTime) {
42 phaseScore = -1.0; // flag agent to be deleted 42 phaseScore = -1.0; // flag agent to be deleted
43 return false; 43 return false;
44 } 44 }
45 double beats = Math.round((e.keyDown - beatTime) / beatInterval); 45 double beats = nearbyint((e.time - beatTime) / beatInterval);
46 err = e.keyDown - beatTime - beats * beatInterval; 46 err = e.time - beatTime - beats * beatInterval;
47 if ((beats > 0) && (-preMargin <= err) && (err <= postMargin)) { 47 if ((beats > 0) && (-preMargin <= err) && (err <= postMargin)) {
48 if (Math.abs(err) > innerMargin) // Create new agent that skips this 48 if (fabs(err) > innerMargin) // Create new agent that skips this
49 a.add(new Agent(this)); // event (avoids large phase jump) 49 a.push_back(Agent(*this)); // event (avoids large phase jump)
50 accept(e, err, (int)beats); 50 accept(e, err, (int)beats);
51 return true; 51 return true;
52 } 52 }
53 } 53 }
54 return false; 54 return false;