Thought I'd explain some more on how to achieve it in case you want to write your own. Basically you're only doing one thing, which is to push a bright dot down a string. That dot just happens to have a fading trail. So you're creating a loop that pushes the dot down the string with each pass:
start with a single bright dot at the beginning of the string
move the dot to the next position
That's the very basic idea. As you move the dot, you're turning off the previous one, otherwise you end up with the whole string lighting up.
Now, it's very easy to simply move the entire string down one position, as opposed to one single dot. Just loop through all of your LEDs and move them. I do that in an array ( strip_colors[STRIP_LENGTH] ) that holds the color values. So, I created a loop that simply takes one pixel, and assign it the color value of the previous pixel in the strip. Take ten LEDs in a strip (and call them pixels if you will.) The pushString() loop counts backwards and assigns each pixel the color for the previous one, effectively moving the whole string one spot over.
Since the loop pushed everything over, you are now left with the very first pixel without any data (or at least, it has the same data in it because the loop doesn't assign it anything.) This is now the one you can change to a different color value. In my case, since I'm simply fading the color down the string, I take whatever the value is and half it by pushing the bits to the right: tcol >>= 1
As you push the string, and add in the new color at the top, you'll end up with a fade effect as the bright dot travels down the line.
You can get crazy and add any random color at the top of the string (the very first pixel), the pushString() loop simply moves it down the line each time. Makes for a very colorful string, as opposed to a single white dot traveling down.
The double drops that I have further in the video is the same method, except the string is divided into two, an upper and lower half. The same thing happens though, the top half I move the pixels up, while the bottom half I move them down. And I add random colors instead of just white.
Keep in mind that if you want to use RGB colors though, you're going to have to break it up and half each separate channel before recombining it again. You can't half the whole value as is, you end up with color shifts. For example, an orange dot will fade to red first before it goes off. By separating the channels, halving each one separately, then recombining to the final RGB color, you will retain the orange color fading to off consistently.