FastLED MIDI Status Display

Hi

I have this working code that illuminates an LED pixel when the Arduino receives the corresponding MIDI cc on signal and turns the led back to dim when the MIDI cc command off

The LEDs are each in a push button and the idea is to indicate what function is associated to each button and when it is on.

I now want to add a second/third color to some of the pixels and have the loop cycle thru them.
I have an array containing the default colors of the pixels.
I am thinking that i could create a defaultcolor2 and defaultcolor3 array.

I just don’t know where to start implementing this.

#include <MIDI.h>
#include <FastLED.h>

#define DATA_PIN 7
#define LDR_PIN A1
#define NUM_LEDS 32
#define LED_TYPE WS2811
CRGB leds[NUM_LEDS];
CRGB defaultColors[NUM_LEDS] {

  CRGB::Red,
  CRGB::Green,
  CRGB::Blue,
  CRGB::Yellow,
  CRGB::Purple,
  CRGB::Grey,
  CRGB::Orange,
  CRGB::DeepPink,
  CRGB::Red,
  CRGB::Green,
  CRGB::Blue,
  CRGB::Yellow,
  CRGB::Purple,
  CRGB::Grey,
  CRGB::Orange,
  CRGB::DeepPink,
  CRGB::Red,
  CRGB::Green,
  CRGB::Blue,
  CRGB::Yellow,
  CRGB::Purple,
  CRGB::Grey,
  CRGB::Orange,
  CRGB::DeepPink,
  CRGB::Red,
  CRGB::Green,
  CRGB::Blue,
  CRGB::Yellow,
  CRGB::Purple,
  CRGB::Grey,
  CRGB::Orange,
  CRGB::DeepPink,

};

MIDI_CREATE_DEFAULT_INSTANCE();
int numbers[NUM_LEDS];

void setup() {
  randomizeList();
  MIDI.begin(MIDI_CHANNEL_OMNI);
  MIDI.setHandleControlChange(MIDIinput);
  MIDI.turnThruOff();
  FastLED.addLeds<WS2811, DATA_PIN, RGB>(leds, NUM_LEDS);
  for ( int i = 0; i < NUM_LEDS; i ++) {
    int thisLED = numbers[i];
    leds[thisLED] = defaultColors[thisLED];
    leds[thisLED] /= 4;
    FastLED.show();
    delay(random(300));
  }
}

void loop() {
  byte bri = analogRead(A0) / 4;
  FastLED.setBrightness(bri);
  MIDI.read();
  FastLED.show();
}

void MIDIinput(byte channel, byte number, byte value) {
  if (number < NUM_LEDS) {
    if (value > 64) {
      leds[number] = defaultColors[number];
    } else {
      leds[number] = defaultColors[number];
      leds[number] /= 4;
    }
  }
}

void randomizeList()
{
  unsigned char chosen[NUM_LEDS];
  unsigned char index, i2;

  for (index = 0; index < NUM_LEDS; index++)
    chosen[index] = 0;

  randomSeed(analogRead(A0));

  for (index = 0; index < NUM_LEDS; index++)
  {
    int r = random(NUM_LEDS - index);
    for (i2 = 0; i2 <= r; i2++)
    {
      r += chosen[i2];
    }
    chosen[r] = 1;
    numbers[index] = r;
  }
}

Perhaps I can use color pallets as i have seen the is a function to fade between color pallets