If I were you, I'd go with WS2812B strips and use a library like the FastLED library or the Neopixel library from Adafruit.com.
You'll need a hefty 5V supply - each WS2812B needs up to 60mA when at full white (all three LEDs on full). Do not try to power them from an Arduino 5V pin. Do connect the power supply ground to the Arduino Gnd.
For example, here's the start of a sketch where I had 4 strips of 43 LEDs, pretty easy to define.
You could have 12 strips of TBD LEDs, just change the definitions
// ArrayOfLedArrays - see https://github.com/FastLED/FastLED/wiki/Multiple-Controller-Examples for more info on
// using multiple controllers. In this example, we're going to set up four NEOPIXEL strips on four
// different pins, each strip getting its own CRGB array to be played with, only this time they're going
// to be all parts of an array of arrays.
// changed to 4 strips of 43
// added 6 button inputs
// added timers & flash counts
// add different brightness levels
#include "FastLED.h"
#define NUM_STRIPS 4
#define NUM_LEDS_PER_STRIP 43
CRGB leds[NUM_STRIPS][NUM_LEDS_PER_STRIP];
and
void setup() {
// tell FastLED there's 43 NEOPIXEL leds on pin 9
FastLED.addLeds<NEOPIXEL, 9>(leds[0], NUM_LEDS_PER_STRIP);
// tell FastLED there's 43 NEOPIXEL leds on pin 10
FastLED.addLeds<NEOPIXEL, 10>(leds[1], NUM_LEDS_PER_STRIP);
// tell FastLED there's 43 NEOPIXEL leds on pin 11
FastLED.addLeds<NEOPIXEL, 11>(leds[2], NUM_LEDS_PER_STRIP);
// tell FastLED there's 43 NEOPIXEL leds on pin 12
FastLED.addLeds<NEOPIXEL, 12>(leds[3], NUM_LEDS_PER_STRIP);