Assists music production by grouping standalone programs into sessions. Community version of "Non Session Manager".
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

243 lines
9.1KB

  1. ! title The Non Session Manager User Manual
  2. ! author Jonathan Moore Liles #(email,male@tuxfamily.org)
  3. ! date February 25, 2012
  4. -- Table Of Contents
  5. : User Manual
  6. :: The Non Session Manager Graphical Interface
  7. / Non Session Manager
  8. < nsm.png
  9. The Non Session Manager is a graphical interface to the NSM Daemon
  10. (nsmd). By default, running the command `non-session-manager` will
  11. start both the GUI and an instance of the daemon.
  12. If a different session root than the default is desired, it may be
  13. specified on the command-line as follows:
  14. > non-session-manager -- --session-root path
  15. This command will instruct the instance of nsmd that the GUI starts
  16. to use `path` as the session root.
  17. All session data is stored in per-session sub-directories of the
  18. /Session Root/.
  19. ::: Session Operations
  20. :::: Open
  21. There are two ways to open a session.
  22. The first is to click the Open button and type in the exact name of
  23. an existing session. The second is to click on the desired session
  24. name in the session list panel in the left hand half of the
  25. interface.
  26. Either way, opening a session saves the current session and switches
  27. to the new one. Clients which are capable of switching projects
  28. without restarting are instructed to do so, resulting in very fast
  29. session open times when such clients are participating in both
  30. sessions.
  31. Clients cannot be added until a session is open, either by /Open/ or
  32. /New/.
  33. As each client launches, a status bar representing it will be added
  34. to the client list in the hand panel of the interface. For clients
  35. which are capable of reporting their progress, a progress bar will
  36. also become active.
  37. Only clients supporting the NSM protocol can be told what to open
  38. and when to save. Clients not supporting NSM may still be added to
  39. the session, but their behavior is undefined other than that NSM can
  40. invoke and kill them.
  41. :::: Close
  42. This option saves and closes the current session. All clients
  43. participating in the session are told to quit. Note that, as
  44. mentioned in the preceding section, in NSM it is not necessary to
  45. close one session before opening another.
  46. :::: Abort
  47. This option closes the current session *without saving*.
  48. :::: Save
  49. This option saves the current session, instructing clients
  50. supporting the NSM protocol to save.
  51. :::: New
  52. This option saves the current session (if one is open) and creates a
  53. new one. The user is prompted for a session name. Session names are
  54. paths under the defined /Session Root/. A session name may include
  55. any number of hierarchical elements, which need not be pre-existing.
  56. For example, one might name a session as follows:
  57. > Albums/Magnum Opus/The Best Song Ever Produced
  58. When inspecting /Session Root/ in a file manager, the above
  59. represents exactly the path you would see.
  60. Renaming a session is not currently supported, but one may simply
  61. move directories around under /Session Root/ and NSM will detect the
  62. new layout upon the next invocation. The session name is not stored
  63. anywhere except in its path.
  64. Advanced users may choose to use symbolic links to organize their
  65. sessions. For example, one could store all their songs under
  66. 'Songs\/' and create an 'Albums/\' directory structure which uses
  67. symlinks to point at the songs stored.
  68. :::: Duplicate
  69. Templates are supported in by the Non Session Manager via
  70. duplication. Clicking on the /Duplicate/ button with a session open
  71. will prompt the user for a new session name. The daemon will then
  72. perform a recursive file copy of the session and open the copy.
  73. Obviously, this should be avoided for sessions containing audio
  74. data, as the copy would be very time consuming.
  75. To create a template in the first place, simply use /New/ to start a
  76. new session (preferably with a name beginning with Template\/), add
  77. the desired clients to it, and configure them (e.g. add plugins,
  78. make JACK connections, etc.)
  79. Now, any time you want to start a session from that template, simply
  80. switch to the template session and click /Duplicate/ to create a new
  81. session based on it.
  82. :::: Add Client
  83. This option will prompt the user for the executable name of the
  84. client to be added to the session. It is not necessary to type the
  85. full path (the PATH environment variable will be searched to find
  86. the executable).
  87. ::: Removing a Client From a Session
  88. If a client dies unexpectedly or is closed by the user (e.g. by
  89. closing its main window), Non Session Manager will detect this and
  90. two buttons will appear on that Client's status bar. One button, the
  91. arrow, causes the client to be restarted, and to reopen its project
  92. file where it left off. The /X/ button causes the client to be
  93. permanently removed from the session.
  94. :: The NSM Daemon
  95. The NSM Daemon (nsmd) is launched automatically by the Non Session
  96. Manager interface whenever one is not found to be already running at
  97. the URL specified in the environment
  98. Users who are not attempting setup advanced modes like shared
  99. sessions between machines will not normally need to even know that
  100. `nsmd` is running.
  101. But for those advanced users, here are the command-line options for launching
  102. nsmd separately from the GUI.
  103. > nsmd [--session-root path] [--osc-port port] [--detach]
  104. The `--session-root` option allows one to override default /Session
  105. Root/ is "$HOME\/NSM Sessions" (this option can also be passed to the
  106. GUI, which will hand it over to the daemon).
  107. `--osc-port` instructs the daemon to bind to a specific UDP port
  108. number instead of selecting an available port automatically.
  109. `--detach` instructs the daemon to close its standard input and
  110. output and go completely into the background. This is useful for
  111. starting the daemon remotely with `rsh`.
  112. When nsmd starts, it will print a string of the following form its
  113. standard output.
  114. > NSM_URL=osc.udp://foo.bar.net:17551/
  115. This is the OSC URL for the daemon process. If this URL is included
  116. in the environment (by either using a fixed port number or starting
  117. nsmd early in the initialization process [like in your .xinitrc]
  118. extracting the URL from its output.) then any NSM capable client
  119. will join the current session when started, even if started from
  120. outside the Non Session Manager interface (e.g. by your desktop
  121. environment's program launch menu).
  122. ::: Multiple NSMD Instance
  123. When dealing with multiple instances of nsmd, whether they be on the
  124. same machine or different machines, it is most convenient to use
  125. fixed port numbers.
  126. :::: Distributed Session Management
  127. In some situations it is necessary to have different audio programs
  128. running on different machines connected by S\/PDIF\/or analog wiring
  129. or over TCP\/IP as achieved by `netjack`. Usually the reason for
  130. doing this is that neither machine is powerful enough to do all the
  131. DSP or synthesis by itself.
  132. Needless to say, these configurations have historically been
  133. extremely difficult to manage--requiring heavy scripting or lots of
  134. manual setup.
  135. NSM is the first and currently only system capable of managing these
  136. sessions.
  137. Let us assume the following conditions for our example:
  138. + We want to distribute a session across two hosts, Host-A and Host-B, on the local area network
  139. + Each host has a completely independent file system (i.e. not NFS)
  140. + We have appropriate access to both hosts.
  141. The first step is to decide what port numbers to use. Let's choose
  142. `6661` for Host-A and `6662` for Host-B.
  143. If either host is running a firewall, then these ports must be opened explicitly!
  144. To start the daemon on host A:
  145. > user@host-a:~$ nsmd --detach --session-root "$HOME/distributed-nsm-sessions" --osc-port 6661
  146. To start the daemon on host B (conveniently from host A, via rsh)
  147. > user@host-a:~$ rsh host-b nsmd --detach --session-root "\$HOME/distributed-nsm-sessions" --osc-port 6662
  148. Note that in the above example, there is a backslash in "$HOME",
  149. this is because otherwise the variable would be expanded on the
  150. local machine, giving the local value rather than what we intended.
  151. Now that both daemons are running, we can start the Non Session
  152. Manager interface with the following command:
  153. > user@host-a:~$ non-session-manager --nsm-url osc.udp://host-a:6661 --nsm-url osc.udp://host-b:6662
  154. The Non Session Manager interface will then connect to the daemons
  155. on both hosts. Creating a new session will create separate session
  156. files on each host. When adding a client, the interface will present
  157. the user with a choice of which host to invoke the client on. Aside
  158. from that it is just like managing any other session. Sessions can
  159. be opened, saved, switched between, etc. and the desired effect will
  160. be seen on each host.
  161. :::: Multiple Sessions On One Host
  162. Simply starting two (or more) instances of the Non Session Manager
  163. interface on the same machine (when the NSM\_URL environment
  164. variable is unset) will result in the ability to have two different
  165. sessions open at the same time on the same host. The instances are
  166. prohibited from opening two instances of the same session.
  167. Imagining a useful application of this feature is left as an
  168. exercise for the user.