Overriding flash functionality

Wazzledi
Posts: 21
Joined: Thu Aug 10, 2023 1:37 pm
Real Name: Dennis Suermann

Hello guys,

I have used QLC the last year for my personal usage, but I always wanted a flash button which really overrides the flash scene to the output.

Since other people also requested this feature in the forums, I decided to take some time and implement this functionality (https://www.qlcplus.org/forum/viewtopic.php?t=6871 and https://qlcplus.org/forum/viewtopic.php?t=14796).
Instead of just implementing this feature, I read in the forums that other users might not want this functionality.

Therefore, I implemented the possibility to activate this effect when the user wants to.
Two options were added:
  • Flash Override Priority - This adds a higher priority to the generic fader (Universe::Flashing). This priority is between Override and SimpleDesk. So, flash buttons will override sliders and also running chasers. We could also consider adding the possibility to choose the priority instead of toggling it to not override sliders but override running chasers.
  • Flash Force LTP - This simply forces the flash scene channels to behave like LTP channels. This will override intensity channels also.
I already submitted a PullRequest, but as Massimo stated there correctly, this should first be discussed with you!

So, please take a look into this PullRequest and leave your opinion about this implementation: https://github.com/mcallegari/qlcplus/pull/1462


For completion in this thread:

Massimo answer to PR:
Hi, thanks for this.
Here's my comments:
  • can you please point me to the relevant discussions that led you to submit this PR?
  • QLC+ does have a "central" place where to store settings (see all QSettings used) but they're not save into projects
  • I need to know why this has to be a global setting rather than per-button one. As far as I know, flashing is needed only with buttons. I don't see a reason to use it elsewhere
  • I'm not sure a new type of state is needed to stay before Simple Desk. A few years ago I added priorities to faders. Maybe that's enough to achieve priority flashing
  • in general, such big changes should be discussed (e.g. in the development section of the forum) before submitting a PR to save time to you to write an already approved code and to me so that I don't have to review ideas not discussed and without the proper knowledge of the code base
Thanks
Wazzledi answer:
Hi,
  • primarily, this was implemented due to personal needs and i thought it would be helpful for others. That's why I submitted a PR.
  • Alright, i did not Knew the QSettings.
  • This does not have to be a global setting. I also thought about adding the possibility to the button itself. But that would add a decision to the user, which does not exactly know what this is for. And if a user really needs this, he can easily activate it. For all other users it would stay the same, and they do not have to make any further decision. I can change this with pleasure. I thought, normally, this decision would be a decision for the whole show file and not for each button.
  • I also don't think a new state is really needed. But what if later on in the development of QLC+ some functions also have the override priority set but should not override flash scenes. I just added it so that further implementation does not break this functionality. But yeah, the existing states would be enough to achieve this.
  • Of course. I literally forgot about the possibility to create a discussion in the forum and thought the discussion could be held here. I will add a forum discussion with pleasure if you want to.
Thanks
Wazzledi
Posts: 21
Joined: Thu Aug 10, 2023 1:37 pm
Real Name: Dennis Suermann

Answer from yestalgia
Massive thanks for sharing this.

This feature would be invaluable to my club shows and would open up a brand new way to program "bumps."

My thoughts:
  • I can see why it would be useful to have buttons with both Override priority on and off for this reason I believe it would be best to have it available to select per button.
  • This said, the "global" setting would be nice to have as a default for new buttons added to the console
  • For the forum discussion: is there a reason you can think of to have a priority level selector? Would the user like a flash button to be an override over other flashbuttons?
[...]
Wazzledi
Posts: 21
Joined: Thu Aug 10, 2023 1:37 pm
Real Name: Dennis Suermann

For the forum discussion: is there a reason you can think of to have a priority level selector? Would the user like a flash button to be an override over other flashbuttons?
Right now the flash button would override every slider in the virtual console, because the slider has the Override priority and the Flash button the Flashing priority which is greater.
The idea came to my mind as i thought: What if the user wants to override running chasers or functions but not the sliders itself. Therefore the checkbox would be not sufficient and a priority level selector is needed.
But that was just one idea.

Feel free to leave your thoughts on this.
Yestalgia
Posts: 421
Joined: Thu Jun 17, 2021 9:31 am
Location: Australia
Real Name:
Contact:

How would you feel about implementing the current feedback given by Massimo?

Would it take a lot of effort to implement this change on a per-button level?
Wazzledi
Posts: 21
Joined: Thu Aug 10, 2023 1:37 pm
Real Name: Dennis Suermann

Yeah, I can try to implement it next week.

I don't think this will be much more effort than implementing the current change.

Then I will implement a proposal next week and keep you updated here.
Wazzledi
Posts: 21
Joined: Thu Aug 10, 2023 1:37 pm
Real Name: Dennis Suermann

I implemented the functionality for buttons (see attached pictures).

Feel free to test it: https://github.com/Wazzledi/qlcplus/

Right now, the previously implemented settings are not used anymore.
We need to discuss, if this should be removed or used somehow.
In my opinion, we should just remove it instead of use this for default settings.
What do you think?
Attachments
qmlButtonProperties.png
widgetUiButtonProperties.png
widgetUiButtonProperties.png (7.71 KiB) Viewed 11734 times
giacomo
Posts: 556
Joined: Tue May 26, 2015 6:17 pm
Real Name:

Thanks a lot Dennis, this feature has been long awaited and it's really useful for busking.
I agree with you, I believe it's fine to choose the wanted behavior when selecting the flash mode.
(probably anything but what would happen if someone toggle this default setting while programming?)
cheers
Wazzledi
Posts: 21
Joined: Thu Aug 10, 2023 1:37 pm
Real Name: Dennis Suermann

You're welcome.

Right now, nothing happens when toggling the "default" settings in the Virtual Console properties, because it is not connected to anything.
My idea would be that these settings would apply to a button when it is created. That would mean that existing buttons would not be affected by this when programming.

Did I understand your question correctly?

Would you need a default setting in the Virtual Console properties? Or is it unnecessary? If nobody really needs it, I want to remove it.
User avatar
mcallegari
Posts: 4727
Joined: Sun Apr 12, 2015 9:09 am
Location: Italy
Real Name: Massimo Callegari
Contact:

I confirm that this setting should be per-button and not global.
I suspect it would lead to unwanted situations rather than improving users workflows
Wazzledi
Posts: 21
Joined: Thu Aug 10, 2023 1:37 pm
Real Name: Dennis Suermann

Alright, I removed the VC properties solution and only left the per-button solution in the implementation.
Yestalgia
Posts: 421
Joined: Thu Jun 17, 2021 9:31 am
Location: Australia
Real Name:
Contact:

Wazzledi wrote: Fri Oct 27, 2023 12:00 pm Alright, I removed the VC properties solution and only left the per-button solution in the implementation.
Thanks for working on this feature, it's a great idea.
Wazzledi
Posts: 21
Joined: Thu Aug 10, 2023 1:37 pm
Real Name: Dennis Suermann

Current discussion in the pull request for completion of this discussion:

mcallegari:
@Wazzledi What is the difference between override and forceLTP now? I think one option could be enough for users since it's clear they want to override everything else when flashing?
Answer Wazzledi:
Let me explain the difference.

ForceLTP:
This option just adds the FadeChannel::ForceLTP Flag to the created FadeChannel for the GenericFader.
This results in the new handling inside the write function for Flashing FadeChannels. When a FadeChannel is Flashing then it sets the forceLTP parameter of the Universe::write(int channel, uchar value, bool forceLTP) method according to whether the FadeChannel::ForceLTP flag is set or not.
This results in the universe handling the specific value as a LTP value.

OverridePriority:
As you might know, the universe has a priority list of GenericFaders which values should be written to the output.
For example: It exists GenericFader a and GenericFader b both have the same priority and a is added before b. Then, the value of b would override the value of channel a (assuming the value is LTP), because b is handled after a. This is normal behavior, but for flashing we want to prioritize this value. For that, we add a new priority so that the Flashing channels would be handled after the normal ones.
This happens for example when a chaser is running, and we want to flash a button. When the next step of the chaser is added, this overrides the flash button without this option.
Right now, the Universe::Flashing priority is greater than the Universe::Override priority, which results in Flash buttons overriding virtual console faders.

I could imagine that the override priority configuration might be unnecessary or too much. But I think some users might not want to override some faders with the flash button. Maybe we can change the name and the handling to override faders.
Therefore, we would add a priority before Universe::Override and after. This will result that we would override everything per default except faders, and if we tick the option we also override faders.

In higher level:
ForceLTP forces the channels of the Flash button to be handled as LTP values. With this we can also flash dimmer values which are lower than the current dimmer values.

OverridePriority forces the handling of the channels to be later than other running functions. This will override virtual console faders and functions triggered after triggering the flash button.
rajones203
Posts: 47
Joined: Mon Dec 05, 2022 1:17 am
Real Name: Russell

I compiled from Wazz’s last night. Just want to say thank you! I’ll be testing it out over the next month when I get the time and be sure to note any problems that I find.

That force LTP should be magic! Looking forward to using it.
______

Russell Jones
TV Professional - EVS, Producer/Director
Lighting Hobbyist
rajones203@gmail.com
User avatar
GGGss
Posts: 3073
Joined: Mon Sep 12, 2016 7:15 pm
Location: Belgium
Real Name: Fredje Gallon

I'm willing to misuse a showcase to this purpose... Let us give this version a try?
All electric machines work on smoke... when the smoke escapes... they don't work anymore
Yestalgia
Posts: 421
Joined: Thu Jun 17, 2021 9:31 am
Location: Australia
Real Name:
Contact:

GGGss wrote: Tue Nov 07, 2023 11:12 pm I'm willing to misuse a showcase to this purpose... Let us give this version a try?
What do you mean by this?
Wazzledi
Posts: 21
Joined: Thu Aug 10, 2023 1:37 pm
Real Name: Dennis Suermann

Actually, there was still a bug in the implementation. The priority was not set properly. I fixed it in the latest commits and also changed the things Massimo noted in the PR.

@rajones203 If you want to test it, recompile it, please. Otherwise, sliders will not be overridden properly.

Feel free to test it.
User avatar
mcallegari
Posts: 4727
Joined: Sun Apr 12, 2015 9:09 am
Location: Italy
Real Name: Massimo Callegari
Contact:

For those who have a GitHub account, there are also automated builds for Windows and Linux
rajones203
Posts: 47
Joined: Mon Dec 05, 2022 1:17 am
Real Name: Russell

Awesome, thanks for the update. I haven’t gotten further than just a Quick Look. Just getting the hang of doing the compiling myself, so the more reps the better.
______

Russell Jones
TV Professional - EVS, Producer/Director
Lighting Hobbyist
rajones203@gmail.com
User avatar
GGGss
Posts: 3073
Joined: Mon Sep 12, 2016 7:15 pm
Location: Belgium
Real Name: Fredje Gallon

Awesome !! Really awesome !!
Forget Loopback magic from now on...

Is there a way to include ~some~ indication on a button in VC when flash override is active?
Please?
All electric machines work on smoke... when the smoke escapes... they don't work anymore
Wazzledi
Posts: 21
Joined: Thu Aug 10, 2023 1:37 pm
Real Name: Dennis Suermann

Do you have any suggestion for visualizing this?

One idea I have is signalizing the state through the color of the star shown when a button is a flash button.
For example:
Normal flash button: Blue star
Only ForceLTP activated: Green star
Only Override activated: Yellow star
Both activated: Red star

This is just an idea. Feel free to leave other ideas.

@mcallegari What do you think? Should we even add a visualization?
Post Reply