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.53k stars 499 forks source link

Supporting Wildcards in OSC Addresses #1804

Open freadZdead opened 2 years ago

freadZdead commented 2 years ago

Hi there,

Would you be able to easily support Wildcards in this module?

In fact, this might actually not be the OSC module that needs it, but the Companion app itself;

I am trying to use Latched buttons, but that if I press any, it releases all other buttons first, so basically

/press/bank/1/* 0

so that it releases ALL buttons in one OSC message. At the moment, this does not seem to work.

Cheers, freadZdead

estilles commented 2 years ago

In fact, this might actually not be the OSC module that needs it, but the Companion app itself;

You're right. This module already supports sending these types of messages. It is up to the OSC server receiving these messages to perform the appropriate OSC address pattern matching/dispatching.

I'm transferring this issue to the Companion core repo.

freadZdead commented 2 years ago

Thanks estilles,

Although I don't know if I would call it "Enhancement" to implement a standard ;P :

https://opensoundcontrol.stanford.edu/spec-1_0.html#osc-message-dispatching-and-pattern-matching

On a serious note, thank you and your peers to develop this amazing application!

Cheers,

Freddy

estilles commented 2 years ago

Although I don't know if I would call it "Enhancement" to implement a standard ;P :

Hahaha. Good point! However, I would argue OSC is not so much a standard but more of a specification. And, when implementing a spec one should consider not just the extent of the spec, but also the practicality, usability, ease of implementation, etc.

I'm considering this an enhancement since it would add and OSC feature that is currently not supported.

On a serious note, thank you and your peers to develop this amazing application!

Thanks! I'm relatively new to the team, but I echo your sentiment. The Companion core team has done a fantastic job.


Now ... back to your request ... I can see how it could be useful to trigger/latch/unlatch a group of buttons simultaneously. But thinking about it just raised more questions.

I figured, if we're going to go through all the trouble to implement one pattern, might as well implement them all. :-)

freadZdead commented 2 years ago

I love the detail :)!

At the moment, I am actually using the internal state release button command, just to avoid all the network traffic - so while this might sit better in another issue, I would also love to see "ALL" in all page and bank inputs, across the board - this would make for a much quicker implementation of functionality when editing. What do you think?

estilles commented 2 years ago

Thanks for all the input @freadZdead. I like this feature request. We'll definitely consider adding it.

KzBoy commented 2 years ago

Does OSC feedback have any support?

Would be nice to be able to have interfaces stay in sync with each other. (Eg a mute/cue showing active on Companion when the equipment activated it)

Julusian commented 2 years ago

/press/bank/1/* 0

One thing to think about here, is that this will also unlatch the button that was just pressed, which doesnt sound like what you are after.

This should be checked, but I suspect that the current osc implementation will also execute the up actions for a button which is triggered like this, which also may not be desirable.

Good question re: order. instantaneous ;P. Does the comms between companion and the surface allow for a handling of a set of things as a combined state change? Well, internally companion has to work through everything in some order. In most cases everything will be done within the same millisecond (or some tiny amount of time), but even then order does matter.

Im not opposed to adding some wildcard support, but I do wonder how useful it will be. Another option to achieve similar things would be to add a new endpoint /press/banks/press 1.1 2.2 1.3 99.4 that allows for pressing multiple buttons by having a variable number of parameters in the packet. I dont know if that is a good idea or endpoint layout, but its an option.

Julusian commented 2 years ago

@KzBoy

The best way to achieve this is to implement a module instead of using the generic osc one. It cant currently be done with the generic osc one, but it probably could be implemented if someone spends the time to figure out how to make it generic enough