Neopixel Mode change with a button

Here you go boss.... the code still has a delay but it'll pick up your button change within 50ms...

int lightCycle = 0;

void loop(){
theaterChaseRainbow(50);
}    


void theaterChaseRainbow(uint8_t wait) {
  //for (int j=0; j < 5; j++) {     // cycle all 256 colors in the wheel
    lightCycle++;
    for (int q=0; q < 3; q++) {
      for (int i=0; i < strip.numPixels(); i=i+3) {
          strip.setPixelColor(i+q, Wheel( (i+lightCycle) % 255));    //turn every third pixel on
        }
        
        strip.show();
       
        delay(wait);
       
        for (int i=0; i < strip.numPixels(); i=i+3) {
          strip.setPixelColor(i+q, 0);        //turn every third pixel off
        }
    }
  //}
  
  if(lightCycle == 256){
    lightCycle = 0;}
}