   high.ceil = ColorIntensity::MAX;
 }
 
+void cycleBulbs(uint8_t which_bulbs)
+{
+  for (int bulb = 64; bulb > 0; bulb /= 4) {
+    if (which_bulbs & bulb) {
+      uint8_t start = curr_index - 1;
+      // Cycle until the first video such that:
+      // 1) its 0-based index is a multiple of this bulb val
+      // 2) its index is not more than this bulb val from the starting index
+      do {
+        nextFile();
+      } while ((curr_index - 1) % bulb != 0
+               || (bulb < 64 && (curr_index-1) / (bulb*4) != start / (bulb*4)));
+    }
+  }
+}
+
 void performPendingOperations(PendingOperations & ops)
 {
 #ifdef DEBUG


        case Pressed::c: {
          CurrentMode = Mode::MACRO;
        } break;

        case Pressed::bc: {

  if (ops.toggle_negative)     Serial.print(F("\ntoggle_negative"));
  if (ops.reset_settings)      Serial.print(F("\nreset_settings"));
  if (ops.toggle_frame_len)    Serial.print(F("\ntoggle_frame_len"));
  if (ops.cycle_bulbs & 64)    Serial.print(F("\ncycle bulb 4"));
  if (ops.cycle_bulbs & 16)    Serial.print(F("\ncycle bulb 3"));
  if (ops.cycle_bulbs & 4)     Serial.print(F("\ncycle bulb 2"));
  if (ops.cycle_bulbs & 1)     Serial.print(F("\ncycle bulb 1"));
}

void printSettings()
