Some Effects don't work on segments with spacing

I’m trying to learn if this is expected behavior or not. I’ve found that some effects do not work on segments when you have spacing to skip LEDs. Instead of showing the animation as expected you kind of just get this alternating between primary and secondary colors along the entire grouping. I haven’t tested this on all effects, but the ones I have tried and confirmed this on are:
Chase
Chase Flash
drip
Halloween Eyes
Meteor

My setup so you can recreate this:
I have a strip of 80 LEDs, cut into 8 strips of 10, all wired in series but the strips run up and down the center post of a desk lamp. So LEds 0-9 run up, then 10-19 run down, 20-29 run up, etc. I was trying to set some effects that basically skip a ring of LEDs at the bottom of the lamp.

Segments:
Segment 0: Start - 18 End - 78 Grouping - 4 spacing - 16 effect - solid
Segment 1: Start - 0 End - 18 Grouping - 1 spacing - 0 effect - solid
Segment 2: Start - 62 End - 80 Grouping - 1 spacing - 0 effect - solid
Segment 3: Start - 22 End - 88 Grouping - 16 spacing - 4 effect - Halloween Eyes

Or the json to directly apply:

{“mainseg”:0,“seg”:[{“id”:0,“start”:18,“stop”:78,“len”:60,“grp”:4,“spc”:16,“on”:true,“bri”:255,“col”:[[234,255,0],[0,0,0],[0,0,0]],“fx”:0,“sx”:128,“ix”:128,“pal”:0,“sel”:false,“rev”:false},{“id”:1,“start”:0,“stop”:18,“len”:18,“grp”:1,“spc”:0,“on”:true,“bri”:255,“col”:[[135,135,135],[224,224,224],[0,0,0]],“fx”:0,“sx”:210,“ix”:168,“pal”:0,“sel”:false,“rev”:false},{“id”:2,“start”:62,“stop”:80,“len”:18,“grp”:1,“spc”:0,“on”:true,“bri”:255,“col”:[[135,135,135],[224,224,224],[0,0,0]],“fx”:0,“sx”:210,“ix”:168,“pal”:0,“sel”:false,“rev”:false},{“id”:3,“start”:22,“stop”:58,“len”:36,“grp”:16,“spc”:4,“on”:true,“bri”:255,“col”:[[255,255,255],[66,66,66],[0,0,0]],“fx”:82,“sx”:0,“ix”:0,“pal”:0,“sel”:false,“rev”:false},{“id”:4,“start”:0,“stop”:0},{“id”:5,“start”:0,“stop”:0},{“id”:6,“start”:0,“stop”:0},{“id”:7,“start”:0,“stop”:0},{“id”:8,“start”:0,“stop”:0},{“id”:9,“start”:0,“stop”:0}]}

As soon as I split segment 3 into two segments so that there is no spacing, the effects all work as you’d expect.
Segments:
Segment 0: Start - 18 End - 78 Grouping - 4 spacing - 16 effect - solid
Segment 1: Start - 0 End - 18 Grouping - 1 spacing - 0 effect - solid
Segment 2: Start - 62 End - 80 Grouping - 1 spacing - 0 effect - solid
Segment 3: Start - 22 End - 38 Grouping - 1 spacing - 0 effect - Halloween Eyes
Segment 4: Start - 42 End - 58 Grouping - 1 spacing - 0 effect - Halloween Eyes

Or the json to directly apply:

{“mainseg”:0,“seg”:[{“id”:0,“start”:18,“stop”:78,“len”:60,“grp”:4,“spc”:16,“fx”:0,“sx”:128,“ix”:128,“pal”:0,“sel”:false,“rev”:false},{“id”:1,“start”:0,“stop”:18,“len”:18,“grp”:1,“spc”:0,“on”:true,“bri”:255,“col”:[[135,135,135],[224,224,224],[0,0,0]],“fx”:0,“sx”:210,“ix”:168,“pal”:0,“sel”:true,“rev”:false},{“id”:2,“start”:62,“stop”:80,“len”:18,“grp”:1,“spc”:0,“on”:true,“bri”:255,“col”:[[135,135,135],[224,224,224],[0,0,0]],“fx”:0,“sx”:210,“ix”:168,“pal”:0,“sel”:true,“rev”:false},{“id”:3,“start”:22,“stop”:38,“len”:16,“grp”:1,“spc”:0,“on”:true,“bri”:255,“col”:[[255,255,255],[66,66,66],[0,0,0]],“fx”:82,“sx”:0,“ix”:0,“pal”:0,“sel”:false,“rev”:false},{“id”:4,“start”:42,“stop”:58,“len”:16,“grp”:1,“spc”:0,“on”:true,“bri”:255,“col”:[[255,255,255],[66,66,66],[0,0,0]],“fx”:82,“sx”:0,“ix”:0,“pal”:0,“sel”:false,“rev”:false},{“id”:5,“start”:0,“stop”:0},{“id”:6,“start”:0,“stop”:0},{“id”:7,“start”:0,“stop”:0},{“id”:8,“start”:0,“stop”:0},{“id”:9,“start”:0,“stop”:0}]}

Again, just trying to see if this is expected behavior or not.

I think if you test this theory with this setup, you will find all LEDs must be addressed by a segment.
Let’s say the strip length is set to 10, and segments you want are pixels 1-3, 4 skipped, 5-7, 8 skipped, and 9-10.
So, that’s 5 segments.
Seg 1: pix1-3
Seg 2: pix4 (set to off)
Seg 3: pix5-7
Seg 4: pix8 (set to off)
Seg 5: pix9-10
That should work without problem.
Expand that to your own desires.
Or, just physically move the “skip” pixels down one spot and use wire between the strip segments.

Yes, that’s basically what my second set of segment definitions does, it breaks the segments I want more complicated effects on into smaller segments without spacing. I’m asking if it’s known and expected that the effects don’t work when you do have spacing in a segment definition.

The skipped segments I don’t want to be off, I want them to have other effects applied. Normally just a solid color, but not always. I’m trying to design various animations with this strip configuration which does require skipping sections of LEDs for the various segments and just need to know what my limitations are.

I think I understand after staring at the details.
Current setup - which has pixels used more than once

{“mainseg”:0,“seg”:[
{“id”:0,“start”:18,“stop”:78,“len”:60,“grp”:4,“spc”:16,…},
{“id”:1,“start”:0,“stop”:18,“len”:18,“grp”:1,“spc”:0,…},
{“id”:2,“start”:62,“stop”:80,“len”:18,“grp”:1,“spc”:0,…},
{“id”:3,“start”:22,“stop”:38,“len”:16,“grp”:1,“spc”:0,…},
{“id”:4,“start”:42,“stop”:58,“len”:16,“grp”:1,“spc”:0,…},
{“id”:5,“start”:0,“stop”:0},
{“id”:6,“start”:0,“stop”:0},
{“id”:7,“start”:0,“stop”:0},
{“id”:8,“start”:0,“stop”:0},
{“id”:9,“start”:0,“stop”:0}]}

Try configuring it like this. I do not know if segments are required to be in order. However, if you can get the overall effect you want to work this way, it is more likely to work in a predictable way.

{“mainseg”:0,“seg”:[
{“id”:0,“start”:0,“stop”:18,…},
{“id”:1,“start”:18,“stop”:22,…},
{“id”:3,“start”:22,“stop”:38,…},
{“id”:4,“start”:38,“stop”:42,…},
{“id”:5,“start”:42,“stop”:58,…},
{“id”:5,“start”:58,“stop”:62,…},
{“id”:6,“start”:62,“stop”:80,…},
{“id”:7,“start”:0,“stop”:0},
{“id”:8,“start”:0,“stop”:0},
{“id”:9,“start”:0,“stop”:0}]}

So, I didn’t think I was using pixels more than once. The way my segments are setup with the spacings and groups no two segments actually try to light the same pixel (this I verified using just solid effect on each segment). But maybe this highlights a misunderstanding on my part? Some segments skip over pixels that other segments light, but does this count as the pixel being used more than once?

In the original post, segment 3 defines a bunch of LEDs that basically skip over 4 pixels that are defined in segment 0. In that setup segment 3 does not animate the effects correctly. But when I break segment 3 into two segments, the effects are fine. Is this because even though I’m spacing to skip over those pixels wled is still considering those pixels used?

If one segment is turning off a segment (like doing nothing with it), and another segment is animating it according to an effect, the pixel is being used twice.
For things to be predictable, you want to have a pixel exist in only one segment.
When I say predictable, sure WLED is going to behave exactly the same way every time.
However, by having pixels accessed multiple times, WLED could change how they process segments, and suddenly the end result is likely to change.

Let’s say right now WLED processes segments in order, 0-9, but some savvy developer discovers the programming would run 2x faster if they processed them in a different, perhaps reverse order. Now your segment ordering and pixel usage is processed differently and the last segment processed in wled will be the lowest segment number, which could have been to blank something that a higher segment number was trying to animate.

I hope this makes sense.

Use each pixel once, and access all pixels somewhere. Maybe segment 0 is the exception and should address all pixels if say there are 300 and only the first 80 are used in segments.

Thanks, looks like I just didn’t fully understand what spacing does. I didn’t think spacing “turned off” pixels, more just skipped them. So that makes sense with what I was seeing with animations. I’ve been able to make most of the animations work the way I want so far by breaking things up, but every single one uses segment 0 defined as I did in the first post. Guess I’ll just hope they don’t change how it does the processing.

Thanks for the education.

I am not 100% correct in any of my prior posts. I merely post with suggestions that seem to make sense and might work better or at least more consistently for your needs.

I hope someone who knows the right answer(s) will post so we both learn.

A video posted here would be appreciated once you get things the way you need/want.