I want to make an RGB LED microlight that has multiple modes for which it flashes with PWM. rainbow fade, slow/fastblink


I want to make my own version of this. I'm willing to do whatever it takes. Can someone point me in the right direction?

Its has to be a small portable flashlight and run off of small batteries.
It has to have multiple modes: one of which is a rainbow fade, another of which is a super fast blinking mode). I understand Pulse Width Modulation achieves this, but I've only seen LARGE circuits that achieve this in comparison with the size of a microlight. I don't think a 555 timer circuit would work for me since it would be too large and I would need 3 to controller the RGB.

I understand that microcontrollers are needed to control the modes, what type of microcontroller could i use that is that small?

If filmed under time lapse, I want to achieve the effect in the picture for a mode:

Any help is very very welcome. This is an extremely important project to me.