Something I should have explained....
In my above examples, four LEDs are marching along in patterns that take about 30 seconds (depending on the timer interupt time, I used 100mS, so the sequence runs at 10x speed). What I didn't explain is that more items (LEDs) can be added that "do there own thing" independently of those four LEDs.
Say we add item 5 with an ON interval of 1, an OFF interval of 157, and an offset of 13. This LED will flash on for 1 second about every two and a half minutes, while the first 4 continue to march along.
Add item 6 with an on interval of 1, an off interval of 171, and an offset of 23. This LED will flash briefly, sometimes matching up with LED 5, sometimes not.
Add more items with similar "random" times and you have a mob of twinkling stars. While the original four LEDs continue dutifully marching along. With ZERO delay statements, everybody does their own thing.
BUT, the times don't have to be fixed. For twinkling items, the ON and OFF times could be varied every time through the loop with the random function without any changes to ANY of the subroutines.
*shrug* I don't care if MrDEB uses this or not. Again, I did it as an exercise for myself.