 
   adjustFrameColors();
 
-  while (millis() - startMillis < 50UL) {
+  unsigned long frame_time = 50 + frame_len * 25UL;
+  while (millis() - startMillis < frame_time) {
     // busy loop until its time to paint the lights
   }
-  startMillis += 50UL;
+  startMillis += frame_time;
 
   LEDstrip.sendPixels(sizeof(frame) / sizeof(*frame), frame);
 }

          CurrentMode = Mode::VIDEO_PLAYBACK;
        } break;

        case Pressed::bc: {
          CurrentMode = Mode::MISC;
        } break;

  brightness = 255;
  negative = 0;
  speed = 0;
  frame_len = 0;
}

void performPendingOperations(PendingOperations & ops)
