When holding or pressing a button repeatedly the software gets confused. It waits for infra red data which is not coming. Because there's a timeout built-in it does not stop changing the colors. I mean: that's not visible.
The cause in my sketch: It reads the IR signal and while interpreting the data, the next IR signal is underway already which it then starts reading halfway down. It should have a thorough check for the starter bits.
This also happens when using two remotes at the same time (Philips RC5 and a Sony).
I guess we are in need of a well-written infra red library. Ken Shirrif published one over here:An Arduino universal remote: record and playback IR signals. But I did not manage to get that one working, had something to do with using another pin than suggested in his sketch. As it was my first project, I decided to read the IR data 'by hand'.
Although my solution works good enough in this setup it's not as good as a dedicated (hardware) receiver. In fact, in my next project in which I try to control stepper motors with the remote, I'm having problems. The stepper is not running smooth.
So now I'm trying Ken's solution again and thinking about writing an interrupt routine which gets called when IR data is available or run the stepper using interrupts...