Skip to content
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

nsm: send client label instead of session name as nsm display_name #174

Open
wants to merge 1 commit into
base: master
Choose a base branch
from

Conversation

jean-emmanuel
Copy link
Contributor

Ça semble plus utile pour distinguer plusieurs instances d'une même application lorsque celle-ci utilise l'argument display_name de la commande /nsm/client/open pour afficher un nom de session dans son interface (par exemple non-mixer-xt).

@Houston4444
Copy link
Owner

Je suis assez d'accord, c'est pas con. Je réflechi deux ou trois jours histoire de pas prendre ce léger changement d'API à la va-vite, mais c'est en bonne voie ;)

@jean-emmanuel
Copy link
Contributor Author

jean-emmanuel commented Apr 27, 2023 via email

@Houston4444
Copy link
Owner

Ça pose quand même problème en fait. Le 'label' n'existe pas forcément (il peut être vide), de plus le label peut être changé côté RaySession, il ne sera pas mis à jour côté client, alors que le nom de session lui ne peut pas changer pendant qu'elle est chargée.

@jean-emmanuel
Copy link
Contributor Author

jean-emmanuel commented Apr 29, 2023 via email

@Houston4444
Copy link
Owner

Je viens de lancer toutes les applications NSM dispo sur ma machine. Je n'ai vu le display_name utilisé que par Non-Mixer-XT, Non-Timeline et Qtractor. Détail intéressant, dans Non-Mixer (l'original), ce n'est pas le display_name qui est utilisé, mais le nom de client JACK (donné par le serveur NSM). C'est donc un choix délibéré du dev de Non-Mixer-XT, peut-être que ça vaudrait le coup de voir de son côté s'il peut changer ou accepter différentes options. Moi ça m'arrangerai, je suis pas chaud chaud pour une valeur qui selon les cas n'évoque pas la même chose, ni pour une option de plus qui affecterait le comportement visuel de 3 programmes seulement.

@jean-emmanuel
Copy link
Contributor Author

jean-emmanuel commented Apr 30, 2023

C'est moi qui ai fait ce choix dans non mixer xt. À mon avis il faut le voir dans l'autre sens : seules 3 applications utilisent le display_name (pour des raisons sémantiques vraisemblablement) mais dans l'état actuel des choses il est inutile, dans l'exemple d’implémentation du fichier nsm.h c'est carrément marqué en commentaire (https://github.com/jackaudio/new-session-manager/blob/e90fa99a5b94f9a93cf209003aad486a37bea07c/extras/nsm.h/nsm.h#L22-L38), donc un tel changement n'aurait qu'un effet bénéfique (-> donner un nom d'affichage au client spécifique au client).

Après c'est effectivement une zone d'ombre dans l'API, il n'y aucune explication/destination officielle pour cette variable, et je pense que l'utilisation de plusieurs instances d'un même logiciel dans une session nsm est une possibilité qui avait simplement été éludée, en tout cas d'un point de vue interface utilisateur. Pour moi l'alternative sera de faire en sorte que non-mixer-xt utilise le client_id ou le nom du répertoire qu'il charge pour en déduire le nom de session à afficher, c'est pas vraiment un problème mais ça fera une appli de moins à utiliser le display_name et il me semble que ça prouve un peu mon point ;). Je comprends quand même la réserve que tu avances, donc je n'insisterais pas plus si ça te semble insuffisant.

@grammoboy2
Copy link

mais dans l'état actuel des choses il est inutile, dans l'exemple d’implémentation du fichier nsm.h c'est carrément marqué en commentaire (https://github.com/jackaudio/new-session-manager/blob/e90fa99a5b94f9a93cf209003aad486a37bea07c/extras/nsm.h/nsm.h#L22-L38), donc un tel changement n'aurait qu'un effet bénéfique (-> donner un nom d'affichage au client spécifique au client).

Non-Daw uses it as display name (non-timeline and non-mixer. Non-sequencer just being neglected probably). It functions here as display name similar to what Ardour would display, but then for a modular daw. So it's no surprise that the comment is not in the original version:
https://github.com/linuxaudio/non/blob/master/nonlib/nsm.h#L30

@grammoboy2
Copy link

If I understand it correctly from the discussion, you're using multiple instances of non-mixer in one session.I was wondering why exactly. Every mixer strip in non-mixer is in fact a JACK client in itself (multi jack client) isn't it? @jean-emmanuel

@jean-emmanuel
Copy link
Contributor Author

jean-emmanuel commented Aug 30, 2023

Yes, there are currently 45 instances of non mixer running in the session you're referring to, it's that way for multiple reasons:

  • it's easier to organize
  • it's consistent with the audio routing logic of the setup
  • if an instance crashes, it doesn't necessarily take the whole setup with it

@grammoboy2
Copy link

The third reason is interesting, I didn't think of that. While I'm not sure if non-mixer is designed to use multiple instances in one session, you've a very special setup with special needs probably. Also one could argue that non-mixer shouldn't crash, but shit happens.

I would say the NSM api has the label feature for this use case. This is what NSM-Proxy is using. The user is able to set a label in NSM-Proxy, which is send to the NSM GUI via the NSM server. It's the responsibility of the NSM client to (re)store the label.

I don't think Ray-Session is supporting this feature though (which I doubt is the best thing to do for compatibility reasons).

@jean-emmanuel
Copy link
Contributor Author

Every software crashes eventually ;).

Anyway I solved the issue in my non-mixer build.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants