Optimization of code for maximum speed, very specific project.

zparticle:
Most interesting is that they seem to be leaking enough power to dimly light a string of LEDs. It isn't a code problem, there is definitely power leaking through the relays. You don't notice it until you connect a string of LEDs, incandescent lights don't have the issue. I wonder if replacing the relays with random cross relays is showing a flaw in the sainsmart board design.

SSRs leak a small amount of current, you will find how much on the datasheet for the SSR. For switching low currents (0.9A or less), there are power opto triacs available with virtually no leakage.

btw if you ever want to increase the number of channels or get more levels of brightness, there is a way to make the critical code (in particular the ISR) faster. Use two arrays of (channel, ticks) pairs. Each entry in the array says which channel should be turned on next, and how many ticks to wait since the last channel. So the ISR only needs to consider one or a few channels each time, except when you have a large number of channels set to the same brightness. The reason for having 2 arrays is that the code in loop() can be setting up one of them while the ISR works from the other.