LED profile switching

By going through the FastLED example "Colorpalatte"; I was able to modify that sketch enough to do something very similar to what I've been looking for.

#include <FastLED.h>

#define LED_PIN     5
#define NUM_LEDS    12
#define BRIGHTNESS  255
#define LED_TYPE    NEOPIXEL
#define COLOR_ORDER GRB
CRGB leds[NUM_LEDS];
/////////////////////////////
/////////// Speed ///////////
#define UPDATES_PER_SECOND 36
/////////////////////////////

CRGBPalette16 currentPalette;
TBlendType    currentBlending;

extern CRGBPalette16 Preset;
extern const TProgmemPalette16 Preset_p PROGMEM;
extern const TProgmemPalette16 Preset2_p PROGMEM;
extern const TProgmemPalette16 Wide_p PROGMEM;

void setup() {
  delay( 3000 ); // power-up safety delay
  FastLED.addLeds<NEOPIXEL, LED_PIN>(leds, NUM_LEDS);
  FastLED.setBrightness(  BRIGHTNESS );

  currentPalette = Preset_p;
  currentBlending = LINEARBLEND;
}


void loop()
{
  ChangePalettePeriodically();

  static uint8_t startIndex = 0;
  startIndex = startIndex + 1; /* motion speed */

  FillLEDsFromPaletteColors( startIndex);

  FastLED.show();
  FastLED.delay(1000 / UPDATES_PER_SECOND);
}

void FillLEDsFromPaletteColors( uint8_t colorIndex)
{
  //////////////////////////////
  uint8_t brightness = 255;
  //////////////////////////////
  for ( int i = 0; i < NUM_LEDS; i++) {
    leds[i] = ColorFromPalette( currentPalette, colorIndex, brightness, currentBlending);
    ////////////////////////////////////////////////////////////
    ///////////////// Changes the width of each color //////////
    colorIndex += 3;
    ////////////////////////////////////////////////////////////
  }
}



void ChangePalettePeriodically()
{
  uint8_t secondHand = (millis() / 1000) % 60;
  static uint8_t lastSecond = 99;

  if ( lastSecond != secondHand) {
    lastSecond = secondHand;

    if ( secondHand == 0)  {
      currentPalette = Preset_p;
      currentBlending = LINEARBLEND;
    }
    if ( secondHand == 20)  {
      currentPalette = Wide_p;
      currentBlending = LINEARBLEND;
    }
    if ( secondHand == 40)  {
      currentPalette = Preset2_p;
      currentBlending = LINEARBLEND;
    }
    if ( secondHand == 55)  {
      currentPalette = Preset2_p;
      currentBlending = NOBLEND;
    }

  }
}




const TProgmemPalette16 Preset_p PROGMEM =
{ ////////////////////
  CRGB::Red,
  CRGB::Red,
  CRGB::Purple,
  CRGB::Purple,

  CRGB::Cyan,
  CRGB::Cyan,
  CRGB::Purple,
  CRGB::Purple,

  CRGB::Red,
  CRGB::Red,
  CRGB::Purple,
  CRGB::Purple,

  CRGB::Cyan,
  CRGB::Cyan,
  CRGB::Purple,
  CRGB::Purple,
  /////////////////////
};


const TProgmemPalette16 Preset2_p PROGMEM =
{ ////////////////////
  CRGB::Red,
  CRGB::Purple,
  CRGB::Cyan,
  CRGB::Purple,

  CRGB::Red,
  CRGB::Purple,
  CRGB::Cyan,
  CRGB::Purple,

  CRGB::Red,
  CRGB::Purple,
  CRGB::Cyan,
  CRGB::Purple,
  CRGB::Red,
  CRGB::Purple,
  CRGB::Cyan,
  CRGB::Purple,
  /////////////////////
};


const TProgmemPalette16 Wide_p PROGMEM =
{ ////////////////////
  CRGB::Red,
  CRGB::Red,
  CRGB::Red,
  CRGB::Red,

  CRGB::Purple,
  CRGB::Purple,
  CRGB::Purple,
  CRGB::Purple,

  CRGB::Cyan,
  CRGB::Cyan,
  CRGB::Cyan,
  CRGB::Cyan,

  CRGB::Purple,
  CRGB::Purple,
  CRGB::Purple,
  CRGB::Purple,

  /////////////////////
};