Let me see if I can help ... it looks like a sizable project 😉Â
Note: FastLED is indeed your best choice here - more mature/advanced and faster than the alternatives like NeoPixel.
I guess the first question is: these 8 strips are allowed to run the same effect at the same time? Meaning: the look and behave identical?
If so, then you can make life easier by connecting all 8 strips to one and the same pin - instead of 8 individual pins.
Ideally when all strips are the same length, and if not: set NUM_LEDS to length of the longest strip.
Running 8 effects in parallel can really quickly become a pain if they need to be "different".
Next challenge is fading to a palette of colors. I have never done this, so my initial approach would be to write a function that replaces the fadeToBlackBy function.
In the meteor rain function, we call something like this to fade to black:
// fade brightness all LEDs one step
for(int j=0; j<NUM_LEDS; j++) {
if( (!meteorRandomDecay) || (random(10)>5) ) {
fadeToBlack(j, meteorTrailDecay );
}
}
Â
Now the functions basically grabs the existing LED color and slowly shifts to the color we want (black). So in your case you'd need to make that shift to the color in your palette.
// used by meteorrain
void fadeToBlack(int ledNo, byte fadeValue) {
// read current LED color
// shift color to palette color
// to replace this:
leds[ledNo].fadeToBlackBy( fadeValue );
}
Â
FastLED has a few functions that could be helpful with this: fadeUsingColor() and blend() where blend() is the one you may be looking for (from what I found online). In all fairness, I have never had a use for these, so I'm not an expert 😉Â
I suspect it works something like this:
leds[j] = blend(leds[j], CRGB::Orange, speed);
Â
Where CRGB::Orange is your target color (I just picked one), and "speed" a number used to define the increments.
You may have to play with this to see if you get it to work to your liking.
Now we theoretically have something that fades to orange but you were looking to use a palette of colors.
Ideally, I'd make a palette with colors (a CRGB array) with an index like we see with the "leds" CRGB array. I hope that makes a little sense.
Kind-a like a second LED array, just with fixed color numbers in it (your palette).
As an alternative, FastLED does have some palette specific functions that may be helpful.
Check out Paletteknife and this FastLED example.
I have not yet worked with palette's ... it's on my to-do list 😁Â