Houston4444/HoustonPatchbay

Patchbay as standalone active session manager

Closed this issue · 2 comments

Some day I might want to do some experimenting with a standalone patchbay as active session manager.

A patchbay announces to a NSM server and is capable of managing the loaded session.

Currently the patchbay in RaySession is already capable of hiding and showing NSM clients. It might be possible to extend the NSM functionality to resuming, stopping and removing clients. This will ask some GUI hacking, which I don't see myself doing atm, but the show/hide functionality is already a good start for a proof-of-concept.

In this idea, launching sessions and launching NSM clients are done in a different application.

I'm sharing this idea, cause maybe you (or someone else) want to do something similar or you might want to make such ideas more easy to accomplish by organizing your code/ projects in such a way, that it is easy to take parts of it and develop it further in a specific direction. It seems you're doing this already, I must admit I'm not really familiar with how you setup the different projects.

Without having dived into it yet, I see two options:

Take the patchbay from RaySession and make a standalone version out of it.

Take Patchance and add the OSC/ NSM functionality to it.

What would be a good starting point?

I won't dive into it directly, but thought it was good to share it in a early stage. If it fits your plans too, you might take it with you when organizing your code/ projects, but if not, don't do the extra work for me, only if it's also a win for you in the first place.

Currently the patchbay in RaySession is already capable of hiding and showing NSM clients. It might be possible to extend the NSM functionality to resuming, stopping and removing clients. This will ask some GUI hacking, which I don't see myself doing atm, but the show/hide functionality is already a good start for a proof-of-concept.

I don't see the 'resume' method in RaySession, because it would not be faster than show the session panel (if hidden) and do the action, same for 'remove', we can remove only a stopped client. 'Stop' could be added to the group context menu, but I am not sure it is a good idea because it is doable by mistake. But if you want to add some extra actions to the scene context menu in an application using HoustonPatchbay, you just have to inherit CanvasMenu.

class CanvasMenu(QMenu):

Without having dived into it yet, I see two options:
Take the patchbay from RaySession and make a standalone version out of it.
Take Patchance and add the OSC/ NSM functionality to it.

I suggest to start from Patchance, RaySession is more complex because it will contain many things you probably don't need, and the patchbay JACK (and ALSA) engine is in another process. Then you can take a look in RaySession code to understand how patchbay groups are defined as NSM clients, and how is managed the show/hide client GUI.

https://github.com/Houston4444/RaySession/blob/81f45d81e7e31eb6bc3b80fac045df5edbccacb5/src/gui/ray_patchbay_manager.py#L120

Thanks for the info. The most realistic and useful idea I think, is to make such a patchbay capable of hide/show NSM client gui's (and set jack metadata, save jack connections). Closing for now.