Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Request] Background Blinking #674

Open
cgarwood opened this issue Jun 1, 2019 · 20 comments
Open

[Request] Background Blinking #674

cgarwood opened this issue Jun 1, 2019 · 20 comments
Labels
area/graphics Button drawing area/gui GUI / Webapp related area/internal Related to an internal action or function of Companion. Enhancement New feature or request Idea Nice to have Would be nice, but not high priority. Solution needed Needs a solution on how to solve it
Milestone

Comments

@cgarwood
Copy link

cgarwood commented Jun 1, 2019

Describe the feature
The ability to set the background and/or foreground colors to blink between two sets of colors. Bonus if we can configure the speed at which it changes.

Is this platform dependent (windows, mac, ..)?
no

If documentation is required to implement, do you know where to find it?
n/a

Usecases
If you're recording or streaming and want to draw more attention to that fact, you could have the background of the recording button blink between black and red.

Blinking the button for an input that's currently live on a switcher

Drawing attention to something that's in an error state.

etc.

@willosof willosof added Enhancement New feature or request area/gui GUI / Webapp related Idea area/internal Related to an internal action or function of Companion. Nice to have Would be nice, but not high priority. Solution needed Needs a solution on how to solve it labels Jun 4, 2019
@Fred-DTV
Copy link

Just somer more usecase examples:

  • a muted microfon (never forget to unmute a commentator again after a break)
  • a timer went to 0:00
  • callback from an other position or device
  • Battery level feedback
  • on buttons with a lot of delayed steps it could be a great addition to see when it reached the last step

@plasticpool
Copy link

I agree with all the use cases here – just knowing that a microphone channel is open (or not) with a flashing/blinking button state would be super helpful, and I'd be happy to contribute to a bounty toward implementing this.

@mdgnys
Copy link

mdgnys commented Jun 15, 2021

A great way to accomplish this would be a module that supplies instance feedback that is simply a constantly switching Boolean back and fourth.

@shaunar2006
Copy link

This would be awesome! I need this!

@justingiffard
Copy link

justingiffard commented Feb 16, 2022

This would really be awesome, from a dev point of view it would be cool if there was a way to specify the frequency of the flashes too. I'd like to add feedback to the X32 module for the tap delay that it gives the user a visual idea of what the delay is like the tap delay on the console

actually thinking of coding something in the module which changes the feedback at the specified frequency but that code could get ugly

@HaxNobody
Copy link

Here's how I implemented blinking buttons:

  1. Set up a new custom variable, let's call it "Flash" for now. You should be able to use the same variable for multiple different buttons, and you can create more variables for different flash patterns.
  2. Set up a trigger that is also called Flash or something similar, and configure the Condition to be Time Interval
  3. Set the time interval to 1 (seconds)
  4. Tick the "Relative Delays" box
  5. Add an Action for "internal: Set custom variable value", configure the Delay to 500ms, select your custom variable, and set the Value to 0
  6. Add another Action the exact same as step 5, but set the Value to 1
  7. Configure your button to add a Feedback of "internal: Check variable value" and set it to your custom variable, with default '=' Operation and the Value as 1.
  8. Finally, configure the text color and background color that you want to switch to with each flash, different from the initial setting at the top of the button config.

Done - you can adjust all the trigger timings to make your flasher work the way you want it to.

@Julusian Julusian added the area/graphics Button drawing label Jul 28, 2022
@codered11343
Copy link

Here's how I implemented blinking buttons:

  1. Set up a new custom variable, let's call it "Flash" for now. You should be able to use the same variable for multiple different buttons, and you can create more variables for different flash patterns.
  2. Set up a trigger that is also called Flash or something similar, and configure the Condition to be Time Interval
  3. Set the time interval to 1 (seconds)
  4. Tick the "Relative Delays" box
  5. Add an Action for "internal: Set custom variable value", configure the Delay to 500ms, select your custom variable, and set the Value to 0
  6. Add another Action the exact same as step 5, but set the Value to 1
  7. Configure your button to add a Feedback of "internal: Check variable value" and set it to your custom variable, with default '=' Operation and the Value as 1.
  8. Finally, configure the text color and background color that you want to switch to with each flash, different from the initial setting at the top of the button config.

Done - you can adjust all the trigger timings to make your flasher work the way you want it to.

Thank you. This was exactly the guidance I was looking for. But to go a step further, would it be possible to make it so that button paused its flashing after the button was pressed, then resumed flashing after it hadn't been pressed after a certain amount of time? Like 5 minutes? If this is currently possible, how would you program that?

@bob454522
Copy link

bob454522 commented Oct 3, 2023

Here's how I implemented blinking buttons:

...

8. Finally, configure the text color and background color that you want to switch to with each flash, different from the initial setting at the top of the button config.

Done - you can adjust all the trigger timings to make your flasher work the way you want it to.

Thanks for posting this, i dont understand how Companion has added so many features in the past 12 months, but is silent on this one (blinking buttons) - seems like a pretty critical feature in terms of production surfaces.

that said, i do have this work around , working, however im not clear on how you control if the button should be blinking or not-blinking.
ie- i have the button blinking, but the only way a see to control weather it blinks or not is to add another action to enable or disable the trigger (ie the trigger from step #2) , is this correct?

thanks

@Julusian Julusian added this to the v3.2 milestone Oct 16, 2023
@Julusian Julusian modified the milestones: v3.2, v3.3 Jan 7, 2024
@dnmeid
Copy link
Member

dnmeid commented Mar 7, 2024

I think I just had an idea how we could implement this request in a flexible and useful way.
At the moment we have the checkbox to invert boolean feedback. We could replace this checkbox by a dropdown with some additional feedback behaviors:

  • normal
  • inverted
  • temporary on on
  • temporary on off
  • temporary on change
  • blinking slow
  • blinking medium
  • blinking fast

So users have control of what element should blink, eg. background color or an image or text.
Users will not have total control over blink frequency, instead all blinks are done in synchronized groups, leading to a less distractive surface. Maybe we make the three frequencies customizable in user preferences.

Current checkbox state can be upgraded to normal and inverted behavior.

@Julusian
Copy link
Member

I'm not convinced that this should replace the invert checkbox, but having something in that left panel between that and the change style properties field would make sense.
image

My reason being that the invert box is part of the boolean feedbacks, which also gets used in the conditions for triggers, and eventually will be part of #1052 and #372, and having to handle a checkbox in some places and a dropdown in others will make everything more complicated.
And I think if it is combined there would be more dropdown options too, such as blinking slow inverted for when you want it to be blinking when the feedback is false. everything would probably need an 'inverted' version, at which point having a separate checkbox might be simpler to understand.

@sackboydad
Copy link

Here's how I implemented blinking buttons:

  1. Set up a new custom variable, let's call it "Flash" for now. You should be able to use the same variable for multiple different buttons, and you can create more variables for different flash patterns.
  2. Set up a trigger that is also called Flash or something similar, and configure the Condition to be Time Interval
  3. Set the time interval to 1 (seconds)
  4. Tick the "Relative Delays" box
  5. Add an Action for "internal: Set custom variable value", configure the Delay to 500ms, select your custom variable, and set the Value to 0
  6. Add another Action the exact same as step 5, but set the Value to 1
  7. Configure your button to add a Feedback of "internal: Check variable value" and set it to your custom variable, with default '=' Operation and the Value as 1.
  8. Finally, configure the text color and background color that you want to switch to with each flash, different from the initial setting at the top of the button config.

Done - you can adjust all the trigger timings to make your flasher work the way you want it to.

Hi! Hope you're still responding to this thread. I implemented your procedure and it's great! But, how can I make a button blinking conditional? For example, I have a button that mutes a channel on my audio mixer. Right now I use a feedback that is designed to just change the background color if muted. Using your procedure how can I turn that into a blinking button? Thanks!

@Donaldini
Copy link

@sackboydad
You can change the Trigger to add a conditional. Your trigger would then no longer be universal for everything, but it works.

I just created a button that will blink whenever i'm injecting too much solar power into the grid and another for when my electric cars battery falls below a certain percentage encouraging me to connect it to the charger.

@HaxNobody thanks for this tutorial!

@sackboydad
Copy link

@sackboydad You can change the Trigger to add a conditional. Your trigger would then no longer be universal for everything, but it works.

I just created a button that will blink whenever i'm injecting too much solar power into the grid and another for when my electric cars battery falls below a certain percentage encouraging me to connect it to the charger.

@HaxNobody thanks for this tutorial!

Thank you. I’m not the best on Companion is there any chance you have the time to show me how to put what you suggested in companion? Thank you very much

@Donaldini
Copy link

Sure, here's a screenshot of my Trigger:

image

I used a Check boolean expression because I needed to cast a variable coming from my Home Assistant environment to a Number (it was a string). The rest of the expression is to check whether the surplus value of my home electrical grid is below the value -4. This means that i'm using a negative of 4kW of electricity in my house OR simply put i'm injecting more than 4kW to the grid instead of using it. Time to do some laundry or charge the car ;-)

@sackboydad
Copy link

Sure, here's a screenshot of my Trigger:

image I used a _Check boolean expression_ because I needed to cast a variable coming from my Home Assistant environment to a Number (it was a string). The rest of the expression is to check whether the surplus value of my home electrical grid is below the value -4. This means that i'm using a negative of 4kW of electricity in my house OR simply put i'm injecting more than 4kW to the grid instead of using it. _Time to do some laundry or charge the car_ ;-)

One more question... I PROMISE I'm not going to become a leech bugging you! Once I get pointed in the right direction I'm pretty good...... We use a WING audio mixer, whose Companion module isn't the best. It does have a published exhaustive set of OSC commands. I have successfully used the customer command in a button on Companion to issue a OSC command. Looking at your settings, I see that I would use the trigger condition to decide if something blinks. But when I try to set a condition on our WING mixer, it says there aren't any. I see you used an expression of some kind to see about your charger level. Would there be a way to use an OSC command or inquiry in the trigger condition? Here is an example of an OSC command that would either set or show the fader level of Bus1's Fader. How would you put that (or can you) into a trigger condition? I SWEAR no more questions!

OSC: /bus/1/fdr (the number range is between -144 and +10

Thank you!

@Donaldini
Copy link

No problem at all, happy to help.

I don't have a Behringer Wing, but when I look at the documentation inside companion I see that there are some dynamic variabels and feedback variables available that might help you. See here:

image

image

I think you need to use one of these variables:

  • $(INSTANCENAME:{Strip}_d)
  • $(INSTANCENAME:{Strip}_{Bus}_d)

I'm not entirely sure I understand your question correctly, but here's a go:
For example if you want to use that level to determine whether or not to let a button blink you could use my expression and change it to: _+$(INSTANCENAME:{Strip}d) > -10 (for letting it blink when it gets too loud)

@sackboydad
Copy link

Thank you so much. Even if this doesn't work I have learned a whole lot! I will try it out. True to my word, I won't bug you any more about this, short of letting you know if it worked.

@Julusian Julusian modified the milestones: v3.3, v3.4 May 16, 2024
@whopkinscom
Copy link

I use generic-blink module to achieve this.
image
For example When I change a camera input on ATEM I reset and start a timer. The feedback on my camera buttons will utilise generic-blink if the timer has passed say 2 minutes to remind me I haven't switched cameras in 2 mins so maybe I want to think about that?
image

@NoSloppy
Copy link

NoSloppy commented Jun 4, 2024

I use generic-blink module to achieve this.

I don't understand how to set this up. Could you explain? Thanks. I don't find generic blink anywhere.

Edit - found it. It's a new Connection.

@Julusian Julusian modified the milestones: v3.4, v3.5 Aug 28, 2024
@Coupe70
Copy link

Coupe70 commented Nov 22, 2024

@josephdadams
Are you the developer of generic-blink?
I didn't find a separate github for it and don't know where else to post...
Would it be possible to get an action "blink button / don't blink button" in addition to the feedback functionality?
For buttons without external feedback it's not 100% convenient to create a custom variable for each button
that might be supposed to blink and set it with an action just to get the blinking running via feedback...

@Julusian Julusian modified the milestones: v3.5, v3.6 Feb 1, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area/graphics Button drawing area/gui GUI / Webapp related area/internal Related to an internal action or function of Companion. Enhancement New feature or request Idea Nice to have Would be nice, but not high priority. Solution needed Needs a solution on how to solve it
Projects
Status: No status
Development

No branches or pull requests