bitfocus / companion

Bitfocus Companion enables the reasonably priced Elgato Stream Deck and other controllers to be a professional shotbox surface for an increasing amount of different presentation switchers, video playback software and broadcast equipment.
http://bitfocus.io/companion
Other
1.6k stars 502 forks source link

[Feat] Multiple sets actions/feedbacks/styles on a single button #2206

Open thedist opened 1 year ago

thedist commented 1 year ago

Is this a feature relevant to companion itself, and not a module?

Is there an existing issue for this?

Describe the feature

The 'Step' functionality in v3 is a nice improvement in that it allows for a single button to have multiple states which each have different actions, but I would like to see the capability to have feedbacks on each state too and an action to transition between specific states. This would greatly increase the amount of functionality you could have on a single page, and be able to show a lot more feedback without need to keep changing between pages (or having multiple physical StreamDecks that are on different pages)

Usecases

A real-world example of this is how most video switcher panels have a 'shift' button which channels buttons from controlling one input to a completely different input when the shift button is held down. Additionally such panels often have feedback such as button lighting which can indicate the status of not just the current button but the state of the shifted button.

I've accomplished this to some degree already with a module-specific solution in the vMix module. In this first example video within a single StreamDeck XL page I can control 2 Mixes, both with 10 preview inputs and 10 program inputs, something which would usually 40 buttons but I've accomplished it in 21 (due to the addition of the Shift button). And the feedback 'blinks' through the shift state.

https://user-images.githubusercontent.com/12213790/204144034-bae7095f-46b5-420e-8315-8bb65275148e.mp4

In this second example I control which inputs are routed to layers of other inputs, Along these lines you could control something like a 24x24 video router, the audio routing of a digital mixer, on a single XL page and have buttons to spare. Or for larger video routers you could have 1 page of 56 sources, 1 page of 56 destinations, and both pages still having 4 buttons spare for the likes of a Shift action and navigation.

https://user-images.githubusercontent.com/12213790/204144041-3be19706-6c37-4362-a727-fcced08ff421.mp4

In my vMix module I've codded it to be capable of any number of button levels, but I've just kept it to a single 'shift' button for simplicity while people are getting used to it. It works great here but there are limitations (such as each Shift state having the same actions/feedbacks but different option values), and it'd be nice if in the long-term it was a feature in Companion that could be standardised for all modules to utilize rather than a module-specific solutions which may vary between implementations.

dnmeid commented 1 year ago

I think this relates to #262 where I propose states for the buttons. What you want could be achieved with that states. i.e. everything related to the visual look (text, colors, feedbacks...) would be in a state, what we have today is the default state but users could add more states. The button or companion logic then could choose one of the states. In your case each step switches to a different state or the shift action switches to a different state.