I did like any Engineer would do. I ask ChatGTP.
Let say I have a string of Seed pixels staring with a short string of 10 pixels going to to the right, 10 going down and 10 going back up (in line with the previous pixels, another 10 pixels going to the right. This would repeat for however X length a particular house eve is. How would you sequence them in xLights, so that the horizontal parts stayed lit but the vertical parts would drop one pixel at a time, like water dripping? Each vertical drop should look somewhat random to the others.
Yes — that’s very doable in xLights.
What you want is basically:
- the top horizontal run acts like a steady “header”
- each 10-pixel vertical leg behaves like an independent mini icicle
- the “drip” moves down one pixel at a time
- each drop starts at different times so they look random
The main trick is
how you model the pixels. If you wire it as one continuous serpentine string, xLights can still work with it, but life gets much easier if you build the model so the
vertical sections are treated as separate drops/submodels.
Best way to model it
Your wiring pattern is:
- 10 right
- 10 down
- 10 up
- 10 right
- 10 down
- 10 up
- repeat
So physically each “module” is:
- one horizontal top segment
- one down leg
- one up leg
- then move over and do it again
For xLights, I would not think of that as one long zigzag string. I would think of it as a
matrix-like custom model where:
- the top row contains the horizontal pixels
- each vertical strand is mapped under its correct top position
Even though the string physically doubles back, the model should visually represent the final layout, not the wire order.
What the model should look like
Imagine the top line is the eve.
Each time you have a hanging section, model it as a
column of 10 pixels downward.
Then the next hanging section is another column.
So in xLights, your prop should look something like:
- top row across the house
- hanging drops below at regular spacing
The continuous wire path is only for controller setup. The visual model should be arranged like icicles.
The simplest sequencing method
Build:
- Main model = the whole icicle run
- Submodel for the top horizontal pixels
- Submodels for each individual vertical drop
Then sequence like this:
1. Keep the top lit
Put a normal
On,
Color Wash,
Twinkle, or low-motion shimmer effect on the
top horizontal submodel.
That gives you the always-lit roofline/header.
2. Make the drips on the vertical submodels
For each vertical drop submodel, use an effect that behaves like a falling pixel:
- Single Strand
- Bars
- Meteor
- or Marquee if tuned carefully
The one I’d try first is
Single Strand because it gives you directional pixel motion pretty easily.
Set it so:
- direction is top to bottom
- only 1 lit node, or maybe 2 if you want a brighter droplet
- speed is slow enough to step visibly downward
- fade/trail very short or none
That makes one drop look like water moving down.
3. Randomize the drops
To make each vertical strand start at different times:
- copy the same effect to all vertical submodels
- then use timing offsets
- or slightly vary start times
- or use different speeds and repeats
That gives the random dripping look.
Even better: use layers
A really good look would be:
On the horizontal header
- steady cool white or blue-white
- maybe tiny shimmer
On each vertical drop
- base dim glow on all verticals
- then a brighter moving droplet on top
So each drop is faintly visible all the time, but an occasional bright bead travels downward.
Practical xLights setup
Option 1 — one custom model with submodels
This is probably the best approach.
- create a Custom Model
- map each node to its visual position
- define submodels:
- Top
- Drop1
- Drop2
- Drop3
- etc.
Then sequence independently.
Option 2 — separate models for each drop
This is easier to think about, but more wor
- one model for the horizontal top
- one model per vertical drop
That makes sequencing extremely easy, because each drop is its own prop. But it can get cluttered if you have a lot of them.
How I would actually do it
If this were my layout, I’d do:
- Top header as one submodel
- each 10-pixel drop as its own submodel
- put a dim steady effect on the whole prop
- put a moving single-pixel effect on each drop
- stagger the effects manually across time
Example:
- Drop 1 starts at 0.0 sec
- Drop 2 starts at 0.6 sec
- Drop 3 starts at 0.2 sec
- Drop 4 starts at 1.1 sec
- Drop 5 starts at 0.4 sec
Then repeat them with slightly different cycle lengths so they don’t sync back up too obviously.
Important modeling note
Because your actual wire path goes:
- top right
- down
- back up
- top right
- down
- back up
you will probably want the custom model node map to place the pixels visually where they belong, rather than relying on default strand ordering.
That way xLights sees:
- top row pixels where the roofline is
- down-strand pixels in the hanging positions
not just a weird snake.
That’s the key to making the effects behave right.
Best effect candidates
In order, I’d test these first:
- Single Strand — best first choice for a clean droplet
- Meteor — good if you want a tiny trail
- Bars — can work if narrowed way down
- Marquee — sometimes useful for stepping motion
For realistic drips,
Single Strand is probably your friend.
My honest recommendation
Do not try to do this as just one undivided string effect and hope xLights magically understands “horizontal stays on, verticals drip randomly.”
It will be much easier if you create:
- a top submodel
- one submodel per hanging drop
Then sequence those separately.
That gives you total control and will look the way you’re imagining.