Code should no be too difficult. Remember, you only have 3 ports on the pic to administer. The data stream is a bit by bit digital representation of the on/off state of each control points., and its length is dependant on the number of control points built. The clock lead is just that, and is activated for each bit being send. Finally, the latch is activated once all data bits are sent out to latch the data into the output registers. So your program will look something like this sequence:
1. Place data bit 0 on data bus lead
2. Toggle clock lead
3 repeat steps 1 $ 2 for all remaining data bits
4. Toggle Latch lead
Keep in mind that the output points do not change state till the latch is toggled, so the change looks immediate.
You can pre-build a data matrix with the desired effects then simply shift the info out to the latches when called for.
Using the shift register approach means that to change 1 bit's output state, all data bits must be re-sent. Even doing this, it will be so fast you cannot tell that it is happening in a serial fashion, and is capable of handling rapidly changing effects.
Dialtone