 
   if (patternId == NIGHT_SPARKLES) {
     nightSparkles();
-  } else if (patternId == BEAUTIFUL_SPARKLES || patternId == SINGLE_COLOR_SPARKLES) {
+  } else if (patternId == BEAUTIFUL_SPARKLES) {
+    beautifulSparkles();
+  } else if (patternId == SINGLE_COLOR_SPARKLES) {
     sparkles();
   } else if (patternId == DISCO_BARBER_1 || patternId == DISCO_BARBER_2) {
     discoBarber();
   } else if (patternId == WORMS) {
     worms();
-  }
-
-  firstRun = false;
+  } else if (patternId == PARTY) {
+    party();
+  } else if (patternId == SIREN) {
+    siren();
+  } else if (patternId == DISCO_TWIRL) {
+    discoTwirl();
+  }
+
+  firstTimeRunningThroughPattern = false;
 
   show_at_max_brightness_for_power();
 }

      leds[k] += CHSV(hue * -20 + k / 4, discoBarberSaturation, _brightness);                       // Then assign a hue to any that are bright enough.
    }
  }
 }

void loop () {
  if (!holdPattern) {
    EVERY_N_MILLISECONDS(rotationInMillseconds) {
      firstRun = true;
      patternId += 1;
      if (patternId > maxPatternId) {
        patternId = 1;

  hue = hue + 1;
}

void beautifulSparkles() {
  fadeToBlackBy(leds, NUM_LEDS, 200);
  numberOfSparkles = upAndDownBy(numberOfSparkles, 1);
  for (int i = 0; i < numberOfSparkles * 4; i++) {
    int pos = random16(NUM_LEDS);
    leds[pos] = CHSV(hue + (pos / 10), 240, 255);
  }
  hue += 10;
}

void sparkles() {
  fadeToBlackBy(leds, NUM_LEDS, 200);
  numberOfSparkles = upAndDownBy(numberOfSparkles, 1);
  for (int i = 0; i < numberOfSparkles * 4; i++) {
    int pos = random16(NUM_LEDS);
    leds[pos] = CHSV(hue, 240, 255);
  }
  hue += 1;
}

uint8_t numberOfWorms = 3;
