 //  { allOff, 0.5 },
   { pause, 0.5 },
 
+  // Color swirls
   { rainbowAnimation, 10, 1 },
   { rainbowAnimation, 15, 0 },
 

AnimationEndedCallback transitionCompleteCallback;
double transitionElapsed; // millis taken by transition so far

void renderColors(unsigned long delta)
{
  if (transitionElapsed < transitionDuration) {
    transitionElapsed += delta;
  }
  else {
    transitionCompleteCallback();
  }
}
/**
 Transition to a frame of colors.
 @param duration in seconds
 */
void transitionToFrame(byte* frame, double duration, void (*completionCallback)(), uint32_t color)
{

  for (int y = 0; y < GRIDSIZE; y++) {
    byte b = frame[y];
    for (int x = 0; x < GRIDSIZE; x++) {

};

Animation animations[] = {
  // Beating heart
  { animateToBigHeart, 0.2 },
  { pause, 3 },
  { animateToSmallHeart, 0.4 },
