A lot of people here are recommending WLED for the controller, but I would suggest you look at the Pixelblaze [1] instead. I've used both in a bunch of different projects and strongly prefer Pixelblaze over WLED.
Some reasons why: - It has a much more intuitive user interface - It's far easier to program new patterns. Programming is done in-browser with a language that's a subset of Javascript, with code changes being applied in realtime. - Due to the way its rendering engine works, the patterns it produces are generally far more 'organic' looking and smoother than most of the WLED ones. - It's possible to map LEDs in arbitrary 2D or 3D configurations (think lights strewn all over a Christmas tree), which WLED can't really do at all. - If you have multiple Pixelblazes you can get them to sync with each other over Wifi. - A really helpful community forum.
Downside: - The firmware isn't open source, though some of its tooling is, and the firmware is stable and gets fairly regular updates, so it's not a huge issue to me. YMMV.
For the LEDs, you probably want wired bullet-style strings of LEDs rather than the thin copper LED strips since they're generally more suited to outside use. By far the most common (and generally cheapest) type of LEDs are WS-2812B or similar. They're OK, though you might notice they don't have good definition at low brightness levels. APA-102 or equivalent are a bit more expensive, but have MUCH better dynamic range, so I'd suggest going for these if you can. There are other better (and more expensive) LEDs still, but it starts to become diminishing returns, plus they can be hard to come by or find suitable controllers for. If you're running lengths of more than a 150 or so LEDs then power starts to matter, and you'll either need to inject power regularly into the strips, and/or use LEDs designed to take 12V or 24V. These can come with caveats such as worse power consumption and/or fewer addressable LEDs per meter, so research what you're buying carefully.
This gets such a huge thumbs up that I had to scroll up and reread it to make sure this wasn’t my own post from a revived thread from last year!
I’ve been using a pixelblaze with a long string of cheap 2812 LEDs on my Christmas tree for three years now with tons of compliments from neighbors.
I’m an embedded software guy, and every year I mean to dig in and try roll my own, or do something clever with an RP2040 board (also a shoutout for the Pimoroni Plasma), but the demands of life and “get the light show started” mean I keep using the Pixelblaze.
I even upgraded to their newer versions last year, and used some of the smaller ones to make some LED tutus for my girls that synced pattern with the tree (the tutus were synced with each other for a Christmas show, but it was trivial to then add the tree for fun afterwards).
The mapping is huge for the wow factor, and the pixelblaze makes it so much easier to get something fast and good enough.
There’s so many community-shared patterns to choose from, and it’s been easy to make small modifications to look better once mapped to a tree, though most work as-is.
My project I won’t get done this year is to try to make some calibration patterns and use ChatGPT to analyze some photos/videos to make a 3-D map, but I’ll realistically probably end up with the vaguely-triangular 2-D map again; I can get it done in about 30 minutes now.
The following is a couple years ago. I think last year I was up to 1100 LEDs and the mapping was a bit better, but I didn’t take good videos.
https://youtu.be/hu-RQx_NpAY?si=BMYbafbPAn2XAlU9