matrix of RGB LEDs, controlled via touch interface, need advice

Hey all, So, sort of new to Arduino but I've made my way through enough projects to feel comfortable attempting this. Basically I'm putting together some lanterns that will have RGB LEDs inside. Let's say 5-10 lanterns. And in each are 2-4 LEDs but they will all be doing the same thing (in each lantern). The kicker is that each lantern will have different lighting going on, so obviously I don't have enough outputs to make this happen. 3 output pins * 10 lanterns! So I've heard of people using persistence of vision to get away with this, but I'm unsure how that looks in the code and on the circuit. Any advice would be great. Also if you have advice for the eventual implementation of a touch device controlling the lights, and programming patterns into the setup, that would help too :) Best, me

This sounds like a good project for shift registers. What's a shift register you ask? It's a little chip that's supper cool. It has a clock and a data input and several output pins. You drive a high/low signal onto the data input and toggle the clock pin. This puts your data on the first output pin. You keep doing this, and you data will shift through the register pin by pin.

Put a shift register inside of each lantern and you can multiply your outputs pretty quickly.

Try something like this one: http://www.digikey.com/product-detail/en/74HC164N,652/568-2621-5-ND/1022896

Let's say 5-10 lanterns. And in each are 2-4 LEDs but they will all be doing the same thing (in each lantern). The kicker is that each lantern will have different lighting going on, so obviously I don't have enough outputs to make this happen. 3 output pins * 10 lanterns

These 10 lanterns are connected together? 10 lanterns x 4 LEDs (per lantern) x 3 inputs (per RGB LED) = 120 "outputs" for Arduino