Multiple led effects that change with one capacitive switch

So, I need help with this pet project of mine.

I've this addressable led strip connected to an arduino uno.

What I have:
So far what it does, it to change sequence of color every x seconds.

What I want:
I want to be able to control this "effects" with a capacitive switch.

So for example if you turn it on it will show a red color, but if you touch the sensor it will change to blue, and so on if you keep touching it.

Sorry I'm explaining it as good as I can.

Code:

#include <FastLED.h>

#define LED_PIN     7
//#define CLOCK_PIN 4 
#define NUM_LEDS    144
#define LED_TYPE    WS2812B
#define COLOR_ORDER GRB
#define BRIGHTNESS  74

CRGB leds[NUM_LEDS];

void setup() {
    delay(1000);
    LEDS.addLeds<LED_TYPE, LED_PIN, COLOR_ORDER>(leds, NUM_LEDS);
//  LEDS.addLeds<LED_TYPE, LED_PIN, CLOCK_PIN COLOR_ORDER>(leds, NUM_LEDS);
    FastLED.setBrightness(BRIGHTNESS);
}

void loop()
{
  FastLED.clear();
  fill_solid(leds, NUM_LEDS, CRGB(145,44,20));
  FastLED.show();
  delay(1000);
  FastLED.clear();

  leds[31] = CRGB::HotPink;
  leds[32] = CRGB::BlueViolet;
  leds[33] = CRGB::HotPink;
  leds[34] = CRGB::YellowGreen;
  leds[35] = CRGB::HotPink;
  leds[36] = CRGB::BlueViolet;
  leds[37] = CRGB::HotPink;
  leds[38] = CRGB::YellowGreen;
  leds[39] = CRGB::HotPink;
  leds[40] = CRGB::YellowGreen;
  leds[41] = CRGB::BlueViolet;
  leds[42] = CRGB::HotPink;
  leds[43] = CRGB::HotPink;
  leds[44] = CRGB::YellowGreen;
  leds[45] = CRGB::HotPink;
    
  FastLED.show();
  delay(1000);
  FastLED.clear();

  fill_solid(leds, NUM_LEDS, CRGB(145,44,238));
  FastLED.show();
  delay(2000);
  FastLED.clear();

  for(int i=0;i<NUM_LEDS;i++){
    leds[i].setRGB(255,0,0);
    FastLED.show();
    delay(20);
 }
  FastLED.clear();

    for(int i=0;i<NUM_LEDS;i++){
    leds[i].setRGB(0,255,0);
    FastLED.show();
    delay(20);
 }
  FastLED.clear();

    for(int i=0;i<NUM_LEDS;i++){
    leds[i].setRGB(0,0,255);
    FastLED.show();
    delay(20);
 }
  FastLED.clear();

 for(int i=0;i<NUM_LEDS;i++){
   fill_rainbow(leds,i, 0, 5);
   FastLED.show();
   delay(20);
 }
  FastLED.clear();

 for(int i=0;i<NUM_LEDS;i++){  
   leds[i-2].setRGB(0,0,0);
   leds[i].setRGB(255,255,0);
   FastLED.show();
   delay(20);
 }
  FastLED.clear();    
}

That code looks like an example. It does not have any reference to any capacitive touch sensor. What have you tried? Post your code and what id does vs. what you want and people will help you.

That code is not well suited for what you want to do. The reason is that it is blocking code. This means it doesn't allow for the sort of multitasking that is needed (update the LEDs while reading the pin the capacitive switch is connected to so it can detect and react to you touching the sensor.

Non-blocking code is better suited to what you want to do. There is a basic demonstration of non-blocking code here:

You will also probably want to do some research on the "state machine" concept, which will be very useful to you for rewriting your LED effects code. Lots of information is available on state machines.