Big Mouth Billy Bass automation library

Dependents:   BillyBass_with_SD

Revision:
8:ad0c038ebfc1
Parent:
7:dba9221acf48
--- a/song.cpp	Thu Jun 20 04:10:22 2013 +0000
+++ b/song.cpp	Thu Jun 20 15:03:49 2013 +0000
@@ -84,17 +84,6 @@
 
 bool Song::addAction(float _time, int _state, DigitalOut* _out, char _code)
 {
-    Action *priorAction = (numActions > 0) ? actions + numActions - 1 : 0;
-    if (priorAction ) {
-        if (priorAction->output == _out) {
-            if (priorAction->actionTime >= _time && priorAction->desiredState != _state)
-                return true;
-            if (priorAction->actionTime < _time && priorAction->desiredState == _state) {
-                priorAction->actionTime = _time;
-                return true;
-            }
-        }
-    }
     if (numActions >= MAX_ACTIONS_PER_SONG) return false;
     actions[numActions++].set(_time, _state, _out, _code);
     return true;
@@ -148,14 +137,16 @@
             goto done;
         }
 
+#if FIX_TIMES
         startTime -= onDelay;
-        startTime -= remainder(startTime, SECONDS_PER_CHUNK);
         if (startTime < 0.0) startTime = 0.0;
 
-        endTime -= offDelay;
-        endTime += remainder(endTime, SECONDS_PER_CHUNK);
         if (endTime < startTime + minOnTime)
             endTime = startTime + minOnTime;
+#endif
+
+        startTime -= remainder(startTime, SECONDS_PER_CHUNK);
+        endTime += remainder(endTime, SECONDS_PER_CHUNK);
 
         fprintf(stderr, "%d %f %f %s\r\n", line, startTime, endTime, outName);
 
@@ -164,9 +155,11 @@
     }
     fprintf(stderr, "Added %d actions\r\n", numActions);
     qsort(actions, numActions, sizeof(Action), &Action::compare);
+#if 0
     for (int i = 0; i < numActions; i++ ) {
         fprintf(stderr, "%f %c\r\n", actions[i].actionTime, actions[i].code);
     }
+#endif
     retval = true;
 
 done: