WLED: Brightness acts slow in DMX Effect Segment Mode

What happened?

When controlling WLED via DMX in “Effect Segment Mode” brightness changes are too slow. In general when using DMX consoles to send brightness changes, these changes are only applied/allowed within certain intervals. This becomes critical, especially when switching brightness channel slider off quickly (to black out DMX fixtures). This behavior makes brightness in “Effect Segment Mode” only controllable correctly, when using slow slider movements 👎

To Reproduce Bug

Activate DMX and send brightness changes to single segments using external console sliders.

Expected Behavior

Brightness should change immediately as other DMX channels do as well.

Install Method

Self-Compiled

What version of WLED?

above WLED 0.14.0-b1

Which microcontroller/board are you seeing the problem on?

ESP32

Relevant log/trace output

No response

Anything else?

Problem must occur within setOpacity:

void Segment::setOpacity(uint8_t o) {
  if (opacity == o) return;
  if (fadeTransition) startTransition(strip.getTransition()); // start transition prior to change
  opacity = o;
  stateChanged = true; // send UDP/WS broadcast
}

Maybe stateChanged = true … TBD

Code of Conduct

  • I agree to follow this project’s Code of Conduct

About this issue

  • Original URL
  • State: open
  • Created a year ago
  • Comments: 24 (7 by maintainers)

Most upvoted comments

Right - I need to read these threads better - I wrote a long reply on another thread, then moved it here, then I read this bit…

Be aware, though, that Solid effect disrespects that and only updates at 3-4 FPS.

So, that’s clearly the root cause of the problems we’re all having.

As I see it there are only a few possible solutions to this:

  1. Revise ‘Solid’ so that it ignores this FPS limit when running in DMX mode (or by settings toggle).
  2. Create a new ‘Solid Fast’ (or similar) mode that doesn’t reduce the FPS (could be hidden from GUI menu).
  3. Accept the workaround of using one of the existing animated FX tweaked to produce a solid colour.

I don’t know the code well, but I assume 2 may be a quick an easy solution for someone familiar with the code to implement? However, I appreciate it’s more code & more work, so if the workaround (while hacky and I don’t like it), is the current accepted solution that’s fine.

It would be good to get an official position on this (@blazoncek / @Aircoookie), as it would close this issue and also https://github.com/Aircoookie/WLED/issues/3245.

Thank you!

Ps. If we do have to go with the workaround, I went with the effect ‘Percent’ set to 100% as I assumed that’s one of the FX with lower processor load - does it matter, any thoughts on that? May be worth noting the workaround recommendation (and the reasoning) on the DMX docs page.

I know you are quite capable to find and fix the problem. 😄 When you’ll be testing or changing code, check led.cpp, handleTransition(). It is the piece where global brightness may be transitioning.

You can change intended FPS in LED Preferences, Advanced section. Be aware, though, that Solid effect disrespects that and only updates at 3-4 FPS. Screenshot 2023-07-18 at 17 26 40