|
|
@@ -1,8 +1,8 @@ |
|
|
|
|
|
|
|
! title Non Session Management API |
|
|
|
! author Jonathan Moore Liles #(email,male@tuxfamily.org) |
|
|
|
! revision Version 1.2 |
|
|
|
! extra #(image,logo,icon.png) |
|
|
|
! title Non Session Management API |
|
|
|
! author Jonathan Moore Liles #(email,male@tuxfamily.org) |
|
|
|
! revision Version 1.2 |
|
|
|
! extra #(image,logo,icon.png) |
|
|
|
|
|
|
|
-- Table Of Contents |
|
|
|
|
|
|
@@ -24,7 +24,7 @@ |
|
|
|
(such as LADISH), although consistency and robustness will likely |
|
|
|
suffer if non-NSM compliant clients are allowed to participate in a |
|
|
|
session. |
|
|
|
|
|
|
|
|
|
|
|
The only dependency for client implementations `liblo` (the OSC |
|
|
|
library), which several Linux audio applications already link to or |
|
|
|
plan to link to in the future. |
|
|
@@ -56,8 +56,8 @@ |
|
|
|
The following sub-sections describe how these options should behave when |
|
|
|
the application is part of an NSM session. These rules only apply |
|
|
|
when session management is active (that is, after the `announce` |
|
|
|
handshake described in the #(ref,Non Session Management API::NSM OSC Protocol) section). |
|
|
|
|
|
|
|
handshake described in the #(ref,Non Session Management API::NSM OSC Protocol) section). |
|
|
|
|
|
|
|
In order to provide a consistent and predictable user experience, it |
|
|
|
is critically important for applications to adhere to these |
|
|
|
guidelines. |
|
|
@@ -72,7 +72,7 @@ |
|
|
|
|
|
|
|
:::: Open |
|
|
|
|
|
|
|
This option *MUST* be disabled. |
|
|
|
This option *MUST* be disabled. |
|
|
|
|
|
|
|
The application may, however, elect to implement an option called |
|
|
|
'Import into Session', creates a copy of a file\/project which is |
|
|
@@ -96,7 +96,7 @@ |
|
|
|
outside of the session path provided by NSM. |
|
|
|
|
|
|
|
:::: Close (as distinguished from Quit or Exit) |
|
|
|
|
|
|
|
|
|
|
|
This option *MUST* be disabled unless its meaning is to disconnect |
|
|
|
the application from session management. |
|
|
|
|
|
|
@@ -190,7 +190,7 @@ |
|
|
|
[[ switch, client is capable of responding to multiple `open` messages without restarting |
|
|
|
[[ dirty, client knows when it has unsaved changes |
|
|
|
[[ progress, client can send progress updates during time-consuming operations |
|
|
|
[[ message, client can send textual status updates |
|
|
|
[[ message, client can send textual status updates |
|
|
|
[[ optional-gui, client has an optional GUI |
|
|
|
|
|
|
|
:::: Response |
|
|
@@ -265,7 +265,7 @@ |
|
|
|
application will receive this signal soon after having responded to |
|
|
|
a `save` message. |
|
|
|
|
|
|
|
:::: Open |
|
|
|
:::: Open |
|
|
|
|
|
|
|
> /nsm/client/open s:path_to_instance_specific_project s:display_name s:client_id |
|
|
|
|
|
|
@@ -365,7 +365,7 @@ |
|
|
|
established in the 'open' message. *UNDER NO CIRCUMSTANCES* should a |
|
|
|
dialog be displayed to the user (giving a choice of where to save, |
|
|
|
etc.) |
|
|
|
|
|
|
|
|
|
|
|
However, if the client is incapable of saving at the specific moment |
|
|
|
without disturbing the user (e.g. a JACK client that can't save |
|
|
|
while the transport is rolling without causing massive XRUNS), then |
|
|
@@ -393,7 +393,7 @@ |
|
|
|
::: Server to Client Informational Messages |
|
|
|
|
|
|
|
:::: Session is Loaded |
|
|
|
|
|
|
|
|
|
|
|
Accepting this message is optional. The intent is to signal to |
|
|
|
clients which may have some interdependence (say, peer to peer OSC |
|
|
|
connections) that the session is fully loaded and all their peers |
|
|
@@ -417,7 +417,7 @@ |
|
|
|
hidden, there should be no window mapped and if the GUI is a |
|
|
|
separate program, it should be killed. |
|
|
|
|
|
|
|
> /nsm/client/show_optional_gui |
|
|
|
> /nsm/client/show_optional_gui |
|
|
|
|
|
|
|
> /nsm/client/hide_optional_gui |
|
|
|
|
|
|
@@ -475,7 +475,7 @@ |
|
|
|
|
|
|
|
Some clients may be able to inform the server when they have unsaved |
|
|
|
changes pending. Such clients may optionally send `is\_dirty` and `is\_clean` |
|
|
|
messages. |
|
|
|
messages. |
|
|
|
|
|
|
|
Clients which have this capability should include `:dirty:` in their |
|
|
|
`announce` capability string. |
|
|
@@ -528,7 +528,7 @@ |
|
|
|
> /reply s:path s:message |
|
|
|
|
|
|
|
> /error s:path i:error_code s:message |
|
|
|
|
|
|
|
|
|
|
|
The first parameter of the reply is the path to the message being |
|
|
|
replied to. The `\/error` reply includes an integer error code |
|
|
|
(non-zero indicates error). `message` will be a description of the |
|
|
@@ -570,13 +570,13 @@ |
|
|
|
|
|
|
|
= /nsm/server/abort |
|
|
|
|
|
|
|
Closes the current session *WITHOUT SAVING* |
|
|
|
Closes the current session *WITHOUT SAVING* |
|
|
|
|
|
|
|
= /nsm/server/quit |
|
|
|
|
|
|
|
Saves and closes the current session and terminates the server. |
|
|
|
|
|
|
|
= /nsm/server/list |
|
|
|
= /nsm/server/list |
|
|
|
|
|
|
|
Lists available projects. One `\/reply` message will be sent for each existing project. |
|
|
|
|
|
|
@@ -585,7 +585,7 @@ |
|
|
|
If the server includes `:broadcast:` in its capability string, then |
|
|
|
clients may send broadcast messages to each other through the NSM |
|
|
|
server. |
|
|
|
|
|
|
|
|
|
|
|
Clients may send messages to the server at the path |
|
|
|
`\/nsm\/server\/broadcast`. |
|
|
|
|
|
|
@@ -594,7 +594,7 @@ |
|
|
|
> /nsm/server/broadcast s:path [arguments...] |
|
|
|
|
|
|
|
The message will then be relayed to all clients in the session at |
|
|
|
the path `path` (with the arguments shifted by one). |
|
|
|
the path `path` (with the arguments shifted by one). |
|
|
|
|
|
|
|
For example the message: |
|
|
|
|
|
|
|