Suggestions on reducing memory requirements using CRGB

Sketch uses 8878 bytes (27%) of program storage space. Maximum is 32256 bytes.

And with all your text and const data kept in flash you still have room for 400 patterns with color as 1 byte to 800 patterns with color as 1 nybble.

You can also use algorithms to make light patterns and effects like moving patterns. I've started to play with that, got 12mm string leds (50 per string until I cut or splice... you have same?) two days ago and had to 'speriment. Next thing I have in mind is morphing colors from one pattern to the next pattern, all the leds "at the same time" to get a flow look.

I haven't gone to PROGMEM with this, algos don't take much RAM.
It's not the best effects but you might like how it works... or not.

#include <FastLED.h>

// LED LIGHTING SETUP
#define DATA_PIN  7
#define NUM_LEDS  50
#define BRIGHTNESS  128
#define LED_TYPE    WS2811
#define COLOR_ORDER RGB
CRGB leds[NUM_LEDS], tRGB;

byte idx;
int pattern;
const int patterns = 250;

// human eye sees motion at 24 FPS, TV is 30FPS
#define UPDATES_PER_SECOND  30
// leave cycles for more strips, Uno/Nano should run many with fast code


void setup()
{
  // LED LIGHTING SETUP
  FastLED.addLeds<WS2811, DATA_PIN, RGB>(leds, NUM_LEDS);
  FastLED.setBrightness(200);
}


void loop()
{
  static unsigned long tStart, tWait = 250;

  switch ( pattern )
  {
    case 0 :
      leds[ idx ].red = idx * 5;
      leds[ idx ].green = 250 - ( idx * 5 );
      leds[ idx ].blue = 0;
      break;

    case 50 :
      leds[ idx ].green = idx * 5;
      leds[ idx ].blue = 250 - ( idx * 5 );
      leds[ idx ].red = 0;
      break;

    case 100 :
      leds[ idx ].blue = idx * 5;
      leds[ idx ].red = 250 - ( idx * 5 );
      leds[ idx ].green = 0;
      break;

    case 150 :
      switch ( idx % 6 )
      {
        case 0 :
          leds[ idx ].red = 127;
          leds[ idx ].green = 0;
          leds[ idx ].blue = 0;
          break;
        case 1 :
          leds[ idx ].red = 63;
          leds[ idx ].green = 63;
          leds[ idx ].blue = 0;
          break;
        case 2 :
          leds[ idx ].red = 0;
          leds[ idx ].green = 127;
          leds[ idx ].blue = 0;
          break;
        case 3 :
          leds[ idx ].red = 0;
          leds[ idx ].green = 63;
          leds[ idx ].blue = 63;
          break;
        case 4 :
          leds[ idx ].red = 0;
          leds[ idx ].green = 0;
          leds[ idx ].blue = 127;
          break;
        case 5 :
          leds[ idx ].red = 63;
          leds[ idx ].green = 0;
          leds[ idx ].blue = 63;
          break;
      }
      break;

    case 200 :
      switch ( idx / 9 )
      {
        case 0 :
          leds[ idx ].red = 127;
          leds[ idx ].green = 0;
          leds[ idx ].blue = 0;
          break;
        case 1 :
          leds[ idx ].red = 63;
          leds[ idx ].green = 63;
          leds[ idx ].blue = 0;
          break;
        case 2 :
          leds[ idx ].red = 0;
          leds[ idx ].green = 127;
          leds[ idx ].blue = 0;
          break;
        case 3 :
          leds[ idx ].red = 0;
          leds[ idx ].green = 63;
          leds[ idx ].blue = 63;
          break;
        case 4 :
          leds[ idx ].red = 0;
          leds[ idx ].green = 0;
          leds[ idx ].blue = 127;
          break;
        case 5 :
          leds[ idx ].red = 63;
          leds[ idx ].green = 0;
          leds[ idx ].blue = 63;
          break;
      }
      break;

    default :
      if ( idx == 0 )
      {
        tRGB = leds[ NUM_LEDS - 1 ];
        leds[ NUM_LEDS - 1 ] = leds[ NUM_LEDS - 2 ];
      }
      else if ( idx == NUM_LEDS - 1 )
      {
        leds[ 0 ] = tRGB;
      }
      else
      {
        leds[ NUM_LEDS - idx - 1 ] = leds[ NUM_LEDS - idx - 2 ];
      }
  }

  if ( idx < NUM_LEDS - 1 )
  {
    idx++;
  }
  else
  {
    if ( pattern < 100 )
    {
      tWait = 180;
    }
    if ( pattern < 200 )
    {
      tWait = 120;
    }
    else
    {
      tWait = 240;
    }

    if ( millis() - tStart >= tWait )
    {
      FastLED.show();
      idx = 0;
      if ( pattern == patterns )
      {
        pattern = 150;
      }
      else
      {
        pattern++;
      }
      tStart = millis();
    }
  }
}