bitfocus / companion

Bitfocus Companion enables the reasonably priced Elgato Streamdeck 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.46k stars 489 forks source link

Ability to add delay value to action within a module #2926

Closed MeestorX closed 6 days ago

MeestorX commented 1 week ago

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

Is there an existing issue for this?

Describe the feature

There's no way to preset the delay value for an action. This affects the Action Recorder and probably Presets as well.

Please include a way to set the delay value for an action step.

Usecases

Needed when creating timed actions.

dnmeid commented 6 days ago

It is possible to define the delay at preset definitions.

For a normal action definition the delay is not considered to be a property of the action itself but rather of the "slot" the action sits in. When adding actions the defining module does not know if the delay is relative or absolute which is a property of the control and could be changed by the user later. We consider the delay to be something the user controls if he wants to delay for some reason and not something he needs to use to make an action working at all, so there should be no need to define an action with a default delay ≠ 0.

Additionally the delays will eventually be replaced in a future version (see #2882).

I doubt that recording the really used delays would be useful in the action recorder. Usually you want to run your recorded actions as fast as possible and and only add manual delays where needed. Often it is necessary to add small amounts of delays just make sure that actions run after each other, but that is a different problem and should not be solved with aotomatically adding delays (again #2882).

MeestorX commented 6 days ago

It is possible to define the delay at preset definitions.

Oh? How do I do that? Would be handy for creating flashing buttons and so on.

For a normal action definition the delay is not considered to be a property of the action itself but rather of the "slot" the action sits in. When adding actions the defining module does not know if the delay is relative or absolute which is a property of the control and could be changed by the user later. We consider the delay to be something the user controls if he wants to delay for some reason and not something he needs to use to make an action working at all, so there should be no need to define an action with a default delay ≠ 0.

I understand that. But, like so much of companion, its original intent and functionality has given way as more capabilities are needed and added. This is just another in a long step of changes, many of which I'm sure were VERY difficult to do. A preset has defined action options that can be edited by the user once the preset is dropped into place. There's no logical difference between changing those options and editing the delay time the same way you might change the name or color of the button or whatever, except that originally nobody thought that would be needed.

Additionally the delays will eventually be replaced in a future version (see #2882).

I like this idea, especially if it leads to doing away with separate actions, triggers, and feedbacks and replacing them with just actions and events. Please make sure that the action recorder can also create these scripts from events.

I doubt that recording the really used delays would be useful in the action recorder. Usually you want to run your recorded actions as fast as possible and and only add manual delays where needed. Often it is necessary to add small amounts of delays just make sure that actions run after each other, but that is a different problem and should not be solved with aotomatically adding delays (again #2882).

I fully disagree. When recording actions, ESPECIALLY in something like the generic MIDI module, often users want to record a fade or change of a control over time, at the speed they wish. Cross-fading, playing notes in a sequence; there's really unlimited uses for recording the delay between actions. I'm fully aware that my modules are in the minority of modules that use the action recorder, but for my users, it's a critical part, and the most-requested feature is the ability to record timed actions.

Please reconsider.

dnmeid commented 6 days ago

It is possible to define the delay at preset definitions.

Oh? How do I do that? Would be handy for creating flashing buttons and so on.

https://bitfocus.github.io/companion-module-base/interfaces/CompanionPresetAction.html

I fully disagree. When recording actions, ESPECIALLY in something like the generic MIDI module, often users want to record a fade or change of a control over time, at the speed they wish. Cross-fading, playing notes in a sequence; there's really unlimited uses for recording the delay between actions. I'm fully aware that my modules are in the minority of modules that use the action recorder, but for my users, it's a critical part, and the most-requested feature is the ability to record timed actions.

I can follow this usecase, but this is a different feature request. Please make it a request only for optionally recording delay times from the action recorder.

MeestorX commented 6 days ago

Thank you.