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;}
}