-->
Home » , , » The Non Session Manager is a graphical interface to the NSM Daemon (nsmd) in Linux audio.
Thursday
12 July 2012

The Non Session Manager is a graphical interface to the NSM Daemon (nsmd) in Linux audio.

nonsessionmanagerThe Non Session Manager is a robust session management API and implementation allowing for faster and vastly simplified workflows in Linux audio.NSM finally delivers on the broken promise made by LASH et al--for Non anyway. So read the at API documentation and get to patching your favorite applications so everybody can feel the relief. 


The Non Session Manager is a graphical interface to the NSM Daemon (nsmd). By default, running the command non-session-manager will start both the GUI and an instance of the daemon. 

1. User Manual

1.1. The Non Session Manager Graphical Interface

Fig. 1.1. Non Session Manager 
fig. 1.1
The Non Session Manager is a graphical interface to the NSM Daemon (nsmd). By default, running the command non-session-manager will start both the GUI and an instance of the daemon.
If a different session root than the default is desired, it may be specified on the command-line as follows:
non-session-manager -- --session-root path

This command will instruct the instance of nsmd that the GUI starts to use path as the session root.

All session data is stored in per-session sub-directories of the Session Root.
1.1.1. Session Operations
1.1.1.1. Open
There are two ways to open a session.

The first is to click the Open button and type in the exact name of an existing session. The second is to click on the desired session name in the session list panel on the left side of the interface.

Either way, opening a session saves the current session and switches to the new one. Clients which are capable of switching projects without restarting are instructed to do so, resulting in very fast session open times when such clients are participating in both sessions.

Clients cannot be added until a session is open, either by Open or New.

As each client launches, a status bar representing it will be added to the client list on the right half the interface. For clients which are capable of reporting their progress, a progress bar will also become active.

Only clients supporting the NSM protocol can be told what to open and when to save. Clients not supporting NSM may still be added to the session, but their behavior is undefined other than that NSM can invoke and kill them.
1.1.1.2. Close
This option saves and closes the current session. All clients participating in the session are told to quit. Note that, as mentioned in the preceding section, in NSM it is not necessary to close one session before opening another.
1.1.1.3. Abort
This option closes the current session without saving.
1.1.1.4. Save


Adserver                   610x250


This option saves the current session, instructing clients supporting the NSM protocol to save.
1.1.1.5. New
This option saves the current session (if one is open) and creates a new one. The user is prompted for a session name. Session names are paths under the defined Session Root. A session name may include any number of hierarchical elements, which need not be pre-existing.

For example, one might name a session as follows:

Albums/Magnum Opus/The Best Song Ever Produced

When inspecting Session Root in a file manager, the above represents exactly the path you would see.
o
Renaming a session is not currently supported, but one may simply move directories around under Session Root and NSM will detect the new layout upon the next invocation. The session name is not stored anywhere except in its path.
1.1.1.6. Duplicate
Templates are supported in by the Non Session Manager via duplication. Clicking on the Duplicate button with a session open will prompt the user for a new session name. The daemon will then perform a recursive file copy of the session and open the copy.

Obviously, this should be avoided for sessions containing audio data, as the copy would be very time consuming.

To create a template in the first place, simply use New to start a new session (preferably with a name beginning with "Templates/"), add the desired clients to it, and configure them (e.g. add plugins, make JACK connections, etc.) Now, any time you want to start a session from that template, simply switch to the template session and click Duplicate to create a new session based on it.
1.1.1.7. Add Client
This option will prompt the user for the executable name of the client to be added to the session. It is not necessary to type the full path (the PATH environment variable will be searched to find the executable).

When controlling an NSM session distributed across multiple machines, the user will also be required to choose which server to invoke the client on.
1.1.2. Removing a Client From a Session
If a client dies unexpectedly or is closed by the user (e.g. by closing its main window), Non Session Manager will detect this and two buttons will appear on that Client's status bar. One button, the arrow, causes the client to be restarted and to reopen its project file where it left off. The X button causes the client to be permanently removed from the session.

1.2. Saving and Restoring Aspects of the Environment

NSM manages clients together in a session. That's it. NSM doesn't know or care what Window Manager or audio subsystem those clients use--nor should it. Specific clients must be written to persist these environmental factors, and added to sessions when required.

For saving and restoring the JACK connection graph, a simple headless client named jackpatch has been developed and included in the NSM distribution. Simply add jackpatch do your basic template session and all the sessions you base on it will have their JACK connection graphs automatically saved and restored.

1.3. The NSM Daemon

The NSM Daemon (nsmd) is launched automatically by the Non Session Manager interface whenever one is not found to be already running at the URL specified in the environment.

Users who are not attempting to setup advanced modes like shared sessions between machines will not normally need to even know that nsmd is running.

But for those advanced users, here are the command-line options for launching nsmd separately from the GUI.

nsmd [--session-root path] [--osc-port port] [--detach]

The --session-root option allows one to override where Session Root is, from the default of "$HOME/NSM Sessions" (this option can also be passed to the GUI, which will hand it over to the daemon).

--osc-port instructs the daemon to bind to a specific UDP port number instead of selecting an available port automatically.

--detach instructs the daemon to close its standard input and output and go into the background. This is useful for starting the daemon remotely with rsh.

When nsmd starts, it will print a string of the following form its standard output.

NSM_URL=osc.udp://foo.bar.net:17551/

This is the OSC URL for the daemon process. If this URL is included in the environment (by either using a fixed port number or starting nsmd early in the initialization process [like in your .xinitrc] extracting the URL from its output) then any NSM capable client will join the current session when started, even if started from outside the Non Session Manager interface (for example, by your Desktop Environment's program launch menu).
1.3.1. Multiple NSMD Instances
When dealing with multiple instances of nsmd, whether they be on the same host or separate hosts, it is most convenient to use fixed port numbers specified with the --osc-port command-line option.
1.3.1.1. Distributed Session Management
In some situations it is necessary to have different audio programs running on different machines, connected by S/PDIF, analog wiring, or over TCP/IP as achieved by netjack. Usually the reason for doing this is that neither machine is powerful enough to do all the DSP or synthesis alone.

Needless to say, these configurations have historically been extremely difficult to manage--requiring heavy scripting and/or lots of manual setup.

NSM is the first--and currently only--system capable of managing these sessions.

Let us assume the following conditions for our example:

  1. We want to distribute a session across two hosts, Host-A and Host-B, on the local area network.

  2. Each host has a completely independent file system (i.e. not NFS).

  3. We have appropriate access to both hosts.

The first step is to decide what port numbers to use. Let's choose 6661 for Host-A and 6662 for Host-B.

If either host is running a firewall, then these ports must be opened explicitly!

To start the daemon on host A:

user@host-a:~$ nsmd --detach --session-root "$HOME/distributed-nsm-sessions" --osc-port 6661

To start the daemon on host B (conveniently from host A, via rsh)

user@host-a:~$ rsh host-b nsmd --detach --session-root "\$HOME/distributed-nsm-sessions" --osc-port 6662

Note that in the above example, there is a backslash in "$HOME", this is because otherwise the variable would be expanded on the local machine, giving the local value rather than what we intended.

Now that both daemons are running, we can start the Non Session Manager interface with the following command:

user@host-a:~$ non-session-manager --nsm-url osc.udp://host-a:6661 --nsm-url osc.udp://host-b:6662

The Non Session Manager interface will then connect to the daemons on both hosts. Creating a new session will create separate session files on each host. When adding a client, the interface will present the user with a choice of which host to invoke the client on. Aside from that it is just like managing any other session. Sessions can be opened, saved, switched between, etc. and the desired effect will be seen on each host.
1.3.1.2. Multiple Sessions On One Host
Simply starting two (or more) instances of the Non Session Manager interface on the same machine (when the NSM_URL environment variable is unset) will result in the ability to have two different sessions open at the same time on the same host. A lock file prevents the two instances from opening the same session.

Imagining a useful application of this feature is left as an exercise for the reader.
If you liked this article, subscribe to the feed by clicking the image below to keep informed about new contents of the blog:

0 commenti:

Post a Comment

Random Posts

  • The OpenBSD project produces a FREE, multi-platform 4.4BSD-based UNIX-like operating system
    02.11.2010 - 0 Comments
    The OpenBSD project produces a FREE, multi-platform 4.4BSD-based UNIX-like operating system. Our efforts emphasize portability, standardization, correctness, proactive security and integrated cryptography. OpenBSD supports binary emulation of most…
  • Using HP2XX a HP-GL Converter: Option Summary.
    15.04.2013 - 0 Comments
    In the following, options are grouped into subjects and are listed alphabetically within each subject. Both long options and short (one-letter) options are listed, where short options appear in parentheses.  Except for the +DPI option, there…
  • The Matroska Multimedia Container is a audiovisual file format that can wrap an unlimited number of video, audio, still picture, and/or subtitle tracks.
    14.01.2013 - 0 Comments
    The 'Matroska Multimedia Container' is an open standard free container format, a file format that can hold an unlimited number of video, audio, picture, or subtitle tracks in one file. It is intended to serve as a universal format for storing…
  • Plop Linux is a small distribution that can boot from CD, DVD, USB flash drive (UFD), USB hard disk or from network with PXE.
    12.08.2011 - 0 Comments
    Plop Linux is a small distribution that can boot from CD, DVD, USB flash drive (UFD), USB hard disk or from network with PXE. It is designed to rescue data from a damaged system, backup and restore operating systems, automate tasks and more. Plop…
  • Zmanda Recovery Manager is an easy to use, flexible and robust backup and recovery manager for MySQL
    05.04.2008 - 0 Comments
    Zmanda Recovery Manager (ZRM) for MySQL is an easy to use, flexible and robust backup and recovery manager for MySQL. It provides scheduling, reporting, RSS & email notification, backup verification, compression, encryption and supports custom…
  • Enigmail, extension to the mail client of Mozilla Thunderbird and Mozilla Seamonkey
    30.04.2008 - 0 Comments
    Enigmail is an extension to the mail client of Mozilla Thunderbird and Mozilla Seamonkey which allows users to access the authentication and encryption features provided by GnuPG (see screenshots). Enigmail is open source and dually-licensed under…
  • Epidemic GNU/Linux is a Brazilian Debian-based desktop distribution with KDE
    17.12.2009 - 0 Comments
    The Epidemic development team has announced the availability of the third beta release of Epidemic GNU/Linux 3.1, a Brazilian Debian-based desktop distribution with KDE and out-of-the box support for popular graphics drivers, media codecs and 3D…
  • The Mobile Industry in numbers [Infographic].
    01.06.2013 - 0 Comments
    If you liked this article, subscribe to the feed by clicking the image below to keep informed about new contents of the blog:
  • MoLinux is an Ubuntu-based Spanish distribution developed in cooperation between the Spanish regional government of Castilla
    01.02.2010 - 0 Comments
    MoLinux 5.2, an Ubuntu-based Spanish distribution developed in cooperation between the Spanish regional government of Castilla La Mancha and Centro de Excelencia de Software Libre, has been released.Some of the more important new features in this…
  • Cantor or a successfull integration in the KDE Community.
    17.03.2014 - 0 Comments
    Cantor is a free software mathematics application for scientific statistics and analysis.It is part of the KDE Software Compilation 4, and was introduced with the 4.4 release as part of the KDE Education Project's kdeedu package. Features. Cantor…

Recent Posts

Recent Posts Widget

Popular Posts

Labels

Archive

page counter follow us in feedly
 
Copyright © 2014 Linuxlandit & The Conqueror Penguin
-->