To really make groups powerful each group needs some additional data of what type of lights there controlling.
EX turn on all red lights, turn on all blue lights, and so on.
Not seeing how you've structured your code, my comments may or may not make sense or be appropriate. But why wouldn't all red lights be a group. At some point the user needs to tell the software what color a string (for fixed color lights), so that action might as well just be the adding of it to a group. (you could have some standard groups set up for this if you wanted)
If a given channel or light can be in more than one group than you would have for example:
Channel 5 = red string on right side of roof
add it to the roof group
add it to the red group
add it to the all_lights group
add it to the top group (for vertical stuff) etc
Then these types will be used in the effects to figure out what to do with what.
I think that for color effects, we start talking really about RGB. I'm not sure what kind of interesting color effects you can do with fixed color strings?
One thing you might consider in mixing fixed color and RGB lights, is to assign a Hue value (from HSV color space) to a fixed color string and let the user assign the label for that. you could then use that to match RGB strings to fixed color strings in whole display effects.
The more I have developed the ideas for this program the more it comes down to getting groups right, so I want to get it right the first go around
Its a good solid puzzle isn't it. I've already re-architected a few things along the way as I realized I coded myself into a corner I didn't like.
I've come to a decent stabilized approach with the concept of the LightElement, which may be a single light, a group, or a chase etc. And a LightGroup, which is a collection of elements (including other groups, or chases) In fact a Chase is a subclass of a group. So you can combine these in some very powerful ways (for example a chase of groups, nested groups, or a group of chases triggered in unison).
Effects are processed after elements, so they have a chance to modify the light output (primarily change color or intensity in some way over time - strobe,pulse etc).
I'd be interested to hear more about the data structures you've come up with for groups, and how a group interacts with the sequence.
-P