-
-
Notifications
You must be signed in to change notification settings - Fork 487
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
[RFC] Streamdeck/control surface integration #2041
Comments
So let's say running all USB through an internal satellite instance is the method, which I'm not convinced is a good idea yet. Does that mean we have a universal installer for Companion where in the UI you select to run We're already doing threading of the surfaces, so it doesn't bother me too much to drop an IP layer in instead of the child process 'tunnel' we currently use. My question is, only because I haven't looked at the What I think we need to do in What if we run a slimmed down UI for |
Yeah, I hadnt thought of that but we definitly could consider it. I do wonder if it will become a ui nightmare, as it would be really good to be able to select specific surfaces to use (for things like xkeys so we play nice with other apps), and it would be nice to not have to implement these things twice. But it depends on how we decide they should be done/work.
No, everything is handled in the one process and thread. But it is using a custom build of node-hid to avoid the 4 surface limit that normal node-hid has. Im still not 100% sure if thats the reason that companion is using a process per surface or not (I suspect it is). But I am also in the middle of working on a fairly large rewrite of node-hid to make it asynchronous which will make them all be a lot happier in a single thread. So I am not worried about this for now
Yeah good idea. I have been thinking that we really need to add a location column to the table, and put in an ip address for the satellite ones, a name would also be good. I am really considering removing the |
Yeah, I wasn't sure how to navigate that, especially for
I think the hardware prefix and s/n would be sufficient without the |
Describe the feature
As part of moving towards supporting more surfaces, we should think about how they are implemented. Nothing will happen on this until a release after 3.0.
Today we essentially have 2 implementations for most supported surface types. One in this repository, and one as part of companion-satellite.
Someone has suggested that it would be good for the surfaces to be implemented in something like what we have for modules.
Doing something like this would be beneficial, as it would mean that we could make companion-satellite support the same plugin system, and only have to implement each surface type once. It will also make it possible for people to write and contribute their own surface implementations, like we have for modules.
I think this is something we should do, once we are able to make better use of weirder surfaces.
This leads me to an idea:
Bundling satellite
Should we do usb directly in companion? Instead we could do it all via satellite and make the launcher run an instance of satellite too. For headless builds, it would also be another systemd unit to run, but I dont see that as a problem.
The benefit of this is that all usb devices will be done the exact same way. But we would have to figure out some ui complexity, and consider what the devices show when satellite has lost connection to companion. This wont give us any more cpu usage than we have today, as we are already running each usb device as its own child process.
Anyone else have other ideas on how we should simplify/improve the implementation and maintenance of supporting usb devices
The text was updated successfully, but these errors were encountered: