independent LED chasers - wish to change all speeds with one button - one MICRO

I have this code to do several independent speed chasers at the same time on one Arduino, original sketch by johnwasser (big thank you!)

Now I would like to be able to interrupt and change all the speeds to different, independent ones by pressing one switch and then each time pressed cycle through say maybe 5 different sets of speeds. So far no luck finding something similar here.

I'de like keep the code in the structure it is , if possible, so as not to confuse myself. It took me a long time to understand this and modify with my Asberger. Any more confusion and I will just shut down and not touch for a long time.

On a level of 1 to 10 skill level I am prob 2-3

Thanks!

const int ALPHAPins[] = {
2,3,4,5}; // gives forward and back
const int ALPHA_COUNT = sizeof ALPHAPins / sizeof (int);
const int ALPHAIntervals[] =
{
300, 300, 300, 300}
; // Milliseconds
unsigned long ALPHATime = millis();
int ALPHAStep = 0;

const int AUXPins[] = {
10,11,12};
const int AUX_COUNT = sizeof AUXPins / sizeof (int);
const int AUXIntervals[] = {
100, 100, 100}
; // Milliseconds
unsigned long AUXTime = millis();
int AUXStep = 0;

const int FLIPFLOPPins[] = {
7, 8};
const int FLIPFLOP_COUNT = sizeof FLIPFLOPPins / sizeof (int);
const int FLIPFLOPIntervals[] = {
1000, 1000}
; // Milliseconds
unsigned long FLIPFLOPTime = millis();
int FLIPFLOPStep = 0;
void setup()
{
int i;
/* ALPHA LED's /
for (i=0; i< ALPHA_COUNT; i++)
pinMode(ALPHAPins
, OUTPUT); // Yes, it's OK to set the pinMode twice on some pins*
_ /* AUX LED's */_

  • for (i=0; i< AUX_COUNT; i++)*
    _ pinMode(AUXPins*, OUTPUT);_
    _ / FLIPFLOP LED's /_
    for (i=0; i< FLIPFLOP_COUNT; i++)
    _ pinMode(FLIPFLOPPins, OUTPUT);
    }
    void loop()
    {
    // Do the ALPHA animation*
    * if ((millis() - ALPHATime) > ALPHAIntervals[ALPHAStep])
    {
    ALPHATime = millis();
    digitalWrite(ALPHAPins[ALPHAStep], LOW);_
    ALPHAStep = (ALPHAStep+1) % ALPHA_COUNT;
    _ digitalWrite(ALPHAPins[ALPHAStep], HIGH);
    }
    // Do the AUX animation*
    * if ((millis() - AUXTime) > AUXIntervals[AUXStep])
    {
    AUXTime = millis();
    digitalWrite(AUXPins[AUXStep], LOW);_
    AUXStep = (AUXStep+1) % AUX_COUNT;
    _ digitalWrite(AUXPins[AUXStep], HIGH);
    }
    // Do the FLIPFLOP animation*
    * if ((millis() - FLIPFLOPTime) > FLIPFLOPIntervals[FLIPFLOPStep])
    {
    FLIPFLOPTime = millis();
    digitalWrite(FLIPFLOPPins[FLIPFLOPStep], LOW);_
    FLIPFLOPStep = (FLIPFLOPStep+1) % FLIPFLOP_COUNT;
    _ digitalWrite(FLIPFLOPPins[FLIPFLOPStep], HIGH);
    }
    }*_

Maybe it's the case of using RTOS?