From 9de99e238032605a30c7579f61344d6d4660edda Mon Sep 17 00:00:00 2001 From: Jonathan Moore Liles Date: Sun, 26 Feb 2012 02:51:33 -0800 Subject: [PATCH] Update documentation. --- mixer/doc/MANUAL.html | 16 +- mixer/doc/MANUAL.mu | 20 +- mixer/doc/OVERVIEW.html | 11 +- mixer/doc/OVERVIEW.mu | 13 +- session/doc/API.html | 542 +++++++++++++++++++++++++++++ session/doc/{NSM.mu => API.mu} | 33 +- session/doc/MANUAL.mu | 242 +++++++++++++ session/doc/Makefile | 25 ++ session/doc/logo.png | Bin 0 -> 23415 bytes session/doc/logo.svg | 278 +++++++++++++++ session/src/nsmd.C | 2 +- timeline/doc/MANUAL.html | 53 ++- timeline/doc/MANUAL.mu | 63 +++- timeline/doc/OVERVIEW.html | 5 +- timeline/doc/OVERVIEW.mu | 7 +- timeline/doc/crappy-screenshot.png | Bin 106085 -> 0 bytes 16 files changed, 1264 insertions(+), 46 deletions(-) create mode 100644 session/doc/API.html rename session/doc/{NSM.mu => API.mu} (94%) create mode 100644 session/doc/MANUAL.mu create mode 100644 session/doc/Makefile create mode 100644 session/doc/logo.png create mode 100644 session/doc/logo.svg delete mode 100644 timeline/doc/crappy-screenshot.png diff --git a/mixer/doc/MANUAL.html b/mixer/doc/MANUAL.html index 88daea2..624ef9f 100644 --- a/mixer/doc/MANUAL.html +++ b/mixer/doc/MANUAL.html @@ -153,20 +153,20 @@ The input parameters of all modules are controllable via OSC, regardless of whet The format of the automatically generated OSC path names is as follows:

-/mixer/strip/[STRIP_NAME]/control/[MODULE_NAME]/[PARAMETER_NAME]
+/strip/[STRIP_NAME]/[MODULE_NAME]/[PARAMETER_NAME]
 

The UDP port that the OSC server binds to can be set by providing the --osc-port command-line option. Without this option, a random port will be bound automatically (the exact OSC URL will always be printed to the console as a line beginning with "OSC: ").

-The default path accepts a float value between 0.0 and 1.0 (a Control Voltage) which will be scaled to the allowable range of the control. +The default path accepts a float value between 0.0 and 1.0 (a Control Voltage like signal) which will be automatically scaled to the allowable range of the control.

A path ending in /unscaled is also available, which accepts exact values, which will be clamped to the allowable range. For example:

-/mixer/strip/[STRIP_NAME]/control/[MODULE_NAME]/[PARAMETER_NAME]/unscaled
+/strip/[STRIP_NAME]/[MODULE_NAME]/[PARAMETER_NAME]/unscaled
 

@@ -180,7 +180,7 @@ If same module/plugin is used twice in a signal chain (e.g. multiple Gain stages For the second instance of the Gain module on the strip named 'Foo'.

-For each OSC parameter change message received, a reply will be sent to the same path at the sender with the new value as the only parameter. Changes to the control value initatied in the GUI will not generate any OSC messages. +Non-DAW accesses these same signals via a more advanced signal routing layer on top of OSC. Any module parameter is easily controlled via Control Sequences in Non-DAW without the need to specify an OSC URL.

1.1.2.3.1.2. Manipulation

@@ -256,6 +256,14 @@ Control Voltages, on the other hand, provide a simple 1:1 source to sink relatio git clone git://fuzzle.org/jm2cv.git +

+ +
NOTE: +The use of Control Signals (OSC) should be preferred for types +of parameter automation, as LADSPA plugins are incapable of +processing Control Voltage signals at full resolution anyway. +
+

1.1.3. Projects

A Non-Mixer project is a directory where Non-Mixer keeps the strip settings, project specific settings, and some meta-data. A project is completely self-contained. You can rename a project as simply as: diff --git a/mixer/doc/MANUAL.mu b/mixer/doc/MANUAL.mu index b6a4901..bee26a7 100644 --- a/mixer/doc/MANUAL.mu +++ b/mixer/doc/MANUAL.mu @@ -118,7 +118,7 @@ The format of the automatically generated OSC path names is as follows: -> /mixer/strip/[STRIP_NAME]/control/[MODULE_NAME]/[PARAMETER_NAME] +> /strip/[STRIP_NAME]/[MODULE_NAME]/[PARAMETER_NAME] The UDP port that the OSC server binds to can be set by providing the `--osc-port` command-line option. Without this option, a random @@ -126,12 +126,13 @@ printed to the console as a line beginning with "OSC: "). The default path accepts a float value between 0.0 and 1.0 (a - Control Voltage) which will be scaled to the allowable range of the control. + Control Voltage like signal) which will be automatically scaled to + the allowable range of the control. A path ending in \/unscaled is also available, which accepts exact values, which will be clamped to the allowable range. For example: -> /mixer/strip/[STRIP_NAME]/control/[MODULE_NAME]/[PARAMETER_NAME]/unscaled +> /strip/[STRIP_NAME]/[MODULE_NAME]/[PARAMETER_NAME]/unscaled If same module\/plugin is used twice in a signal chain (e.g. multiple Gain stages), then a position dependent sequence number @@ -142,10 +143,10 @@ For the second instance of the Gain module on the strip named 'Foo'. - For each OSC parameter change message received, a reply will be sent - to the same path at the sender with the new value as the only - parameter. Changes to the control value initatied in the GUI will - *not* generate any OSC messages. + Non-DAW accesses these same signals via a more advanced signal + routing layer on top of OSC. Any module parameter is easily + controlled via Control Sequences in Non-DAW without the need to + specify an OSC URL. :::::: Manipulation @@ -235,6 +236,11 @@ > git clone git://fuzzle.org/jm2cv.git +{ NOTE: +{ The use of Control Signals (OSC) should be preferred for types +{ of parameter automation, as LADSPA plugins are incapable of +{ processing Control Voltage signals at full resolution anyway. + ::: Projects A Non-Mixer project is a directory where Non-Mixer keeps the strip diff --git a/mixer/doc/OVERVIEW.html b/mixer/doc/OVERVIEW.html index 11a4828..1799f37 100644 --- a/mixer/doc/OVERVIEW.html +++ b/mixer/doc/OVERVIEW.html @@ -51,12 +51,15 @@ February 1, 2010


1. Overview

+
+ +
fig.

1.1. Description

The Non Mixer is a powerful, reliable and fast modular Digital Audio Mixer, released under the GNU General Public License (GPL). It utilizes the JACK Audio Connection Kit for inter-application audio I/O and the FLTK GUI toolkit for a fast and lightweight user interface.

-Please see the Manual for more information. +Please see the Manual for more information (and lots of screenshots).

1.2. Why write another one?

@@ -91,7 +94,7 @@ Since the Mixer is an entirely separate unit, you may use any JACK capable mixer The mixer's design is modular, with all DSP occurring in discrete modules. One module hosts LADSPA plugins and the mixer is capable of receiving control (automation) data for any module parameter from Non-DAW (or another program) via JACK.

-Control data is expressed as Control Voltage (CV). +Control data is expressed either as Control Voltage (CV) or Control Signals.

1.3.2. Modular Signal Processing

@@ -115,7 +118,7 @@ There is no limit imposed by Non Mixer on the total number of strips or Mixer in

1.3.7. Automation

-Any module parameter may be bound to a control. The control may be controlled via the GUI, or externally via a Control Voltage signal, such as is output by a Non-DAW control sequence. +Any module parameter may be bound to a control. The control may be controlled via the GUI, or externally via a Control Voltage signal, such as is output by a Non-DAW control sequence. All module parameters are alterable via OSC messages, regardless of whether or not they have controls defined.

What does freedom have to do with this software?

@@ -155,6 +158,8 @@ The following libraries are required to build Non DAW and Non Mixer

Community

Feel free to drop by the #non channel on irc.freenode.net. diff --git a/mixer/doc/OVERVIEW.mu b/mixer/doc/OVERVIEW.mu index 771dd50..15857f6 100644 --- a/mixer/doc/OVERVIEW.mu +++ b/mixer/doc/OVERVIEW.mu @@ -8,6 +8,8 @@ : Overview +< non-mixer-complex.png + :: Description The Non Mixer is a powerful, reliable and fast modular Digital Audio @@ -16,7 +18,8 @@ I\/O and the FLTK GUI toolkit for a fast and lightweight user interface. - Please see the #(url,MANUAL.html,Manual) for more information. + Please see the #(url,MANUAL.html,Manual) for more information (and + lots of screenshots). :: Why write another one? @@ -76,7 +79,8 @@ receiving control (automation) data for any module parameter from Non-DAW (or another program) via JACK. - Control data is expressed as Control Voltage (CV). + Control data is expressed either as Control Voltage (CV) or Control + Signals. ::: Modular Signal Processing @@ -124,6 +128,9 @@ Any module parameter may be bound to a /control/. The control may be controlled via the GUI, or externally via a Control Voltage signal, such as is output by a Non-DAW control sequence. + + All module parameters are alterable via OSC messages, regardless of + whether or not they have /controls/ defined. ; What does freedom have to do with this software? @@ -174,6 +181,8 @@ * FLTK >= 1.1.7 (with `fluid`) * JACK >= 0.103.0 * liblrdf >= 0.1.0 +* liblo >= 0.26 +* libsigc++ >= 2.0.0 ; Community diff --git a/session/doc/API.html b/session/doc/API.html new file mode 100644 index 0000000..1ed3a9d --- /dev/null +++ b/session/doc/API.html @@ -0,0 +1,542 @@ + + + + + +Non Session Management API + + +

+

Non Session Management API

+

+
+Jonathan Moore Liles <male@tuxfamily.org>
+August 1, 2010
+Version 0.8 +

+
+ +

1. Non Session Management API

+

+The Non Session Management API is used by the various components of the Non audio production suite to allow any number of independent programs to be managed together as part of a logical session (i.e. a song). Thus, operations such as loading and saving are synchronized. +

+

+The API comprises a simple Open Sound Control (OSC) based protocol, along with some behavioral guidelines, which can easily be implemented by various applications. +

+

+The Non project contains an program called nsmd which is an implementation of the server side of the NSM API. nsmd is controlled by the non-session-manager GUI. However, the same server-side API can also be implemented by other session managers (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. +

+

+The aim of this project is to thoroughly define the behavior required of clients. This is an area where other attempts at session management (LASH and JACK-Session) have failed. Often the difficulty with these systems has been not in implementing support for them, but in attempting to interpret the confusing, ambiguous, or ill-conceived API documentation. For these reasons and more all previous attempts at Linux audio session management protocols are considered harmful. +

+

+You WILL see some unambiguous and emphatic language in this document. For the good of the user, these rules are meant to be followed and are non-negotiable. If an application does not conform to this specification it should be considered broken. Consistency across applications under session management is very important for a good user experience. +

+

1.1. Client Behavior Under Session Management

+

+Most graphical applications make available to the user a common set of file operations, typically presented under a File or Project menu. +

+

+These are: New, Open, Save, Save As, Close and Quit or Exit. +

+

+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 section). In order to provide a consistent and predictable user experience, it is critically important for applications to adhere to these guidelines. +

+

1.1.1. New

+

+This option may empty/reset the current file or project (possibly after user confirmation). UNDER NO CIRCUMSTANCES should it allow the user to create a new project/file in another location. +

+

1.1.2. Open

+

+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 then saved at the session path provided by NSM. +

+

1.1.3. Save

+

+This option should behave as normal, saving the current file/project as established by the NSM open message. +

+

+UNDER NO CIRCUMSTANCES should this option present the user with a choice of where to save the file. +

+

1.1.4. Save As

+

+This option MUST be disabled. +

+

+The application may, however, elect to implement an option called 'Export from Session', which creates a copy of the current file/project which is then saved in a user-specified location outside of the session path provided by NSM. +

+

1.1.5. Close (as distinguished from Quit or Exit)

+

+ This option MUST be disabled unless its meaning is to disconnect the application from session management. +

+

1.1.6. Quit or Exit

+

+This option may behave as normal (even possibly asking the user to confirm exiting). +

+

1.2. NSM OSC Protocol

+

+All message parameters are REQUIRED. All messages MUST be sent from the same socket as the announce message, using the lo_send_from method of liblo or its equivalent, as the server uses the return addresses to distinguish between clients. +

+

+Clients MUST create thier OSC servers using the same protocol (UDP,TCP) as found in NSM_URL. liblo is lacking a robust TCP implementation at the time of writing, but in the future it may be useful. +

+

1.2.1. Establishing a Connection

+

1.2.1.1. Announce

+

+At launch, the client MUST check the environment for the value of NSM_URL. If present, the client MUST send the following message to the provided address as soon as it is ready to respond to the /nsm/client/open event: +

+
+
+/nsm/server/announce s:application_name s:capabilities s:executable_name i:api_version_major i:api_version_minor i:pid
+
+

+If NSM_URL is undefined, invalid, or unreachable, then the client should proceed assuming that session management is unavailable. +

+

+api_version_major and api_version_minor must be the two parts of the version number of the NSM API as defined by this document. +

+

+Note that if the application intends to register JACK clients, application_name MUST be the same as the name that would normally by passed to jack_client_open. For example, Non-Mixer sends "Non-Mixer" as its application_name. Applications MUST NOT register their JACK clients until receiving an open message; the open message will provide a unique client name prefix suitable for passing to JACK. This is probably the most complex requirement of the NSM API, but it isn't difficult to implement, especially if the application simply wishes to delay its initialization process breifly while awaiting the announce reply and subsequent open message. +

+

+capabilities MUST be a string containing a colon separated list of the special capabilities the client possesses. e.g. ":dirty:switch:progress:" +

+
+ + + + + + +
+Fig. 1.1. Available Client Capabilities +
NameDescription
switchclient is capable of responding to multiple `open` messages without restarting
dirtyclient knows when it has unsaved changes
progressclient can send progress updates during time-consuming operations
messageclient can send textual status updates
+

1.2.1.2. Response

+

+The server will respond to the client's announce message with the following message: +

+
+
+/reply "/nsm/server/announce" s:message s:name_of_session_manager s:capabilities
+
+

+message is a welcome message. +

+

+The value of name_of_session_manager will depend on the implementation of the NSM server. It might say "Non Session Manager", or it might say "LADISH". This is for display to the user. +

+

+capabilities will be a string containing a colon separated list of special server capabilities. +

+

+Presently, the server capabilities are: +

+
+ + + + +
+Fig. 1.2. Available Server Capabilities +
NameDescription
server_controlclient-to-server control
broadcastserver responds to /nsm/server/broadcast message
+

+A client should not consider itself to be under session management until it receives this response. For example, the Non applications activate their "SM" blinkers at this time. +

+

+If there is an error, a reply of the following form will be sent to the client: +

+
+
+/error "/nsm/server/announce" i:error_code s:error_message
+
+

+The following table defines possible values of error_code: +

+
+ + + + + +
+Fig. 1.3. Response codes +
CodeMeaning
ERR_GENERALGeneral Error
ERR_INCOMPATIBLE_APIIncompatible API version
ERR_BLACKLISTEDClient has been blacklisted.
+

1.2.2. Server to Client Control Messages

+

+Compliant clients MUST accept the client control messages described in this section. All client control messages REQUIRE a response. Responses MUST be delivered back to the sender (NSM) from the same socket used by the client in its announce message (by using lo_send_from) AFTER the action has been completed or if an error is encountered. The required response is described in the subsection for each message. +

+

+If there is an error and the action cannot be completed, then error_code MUST be set to a valid error code (see ) and message to a string describing the problem (suitable for display to the user). +

+

+The reply can take one of the following two forms, where path MUST be the path of the message being replied to (e.g. "nsm/client/save": +

+
+
+/reply s:path s:message
+
+
+
+/error s:path i:error_code s:message
+
+

1.2.2.1. Quit

+

+There is no message for this. Clients will receive the Unix SIGTERM signal and MUST close cleanly IMMEDIATELY, without displaying any kind of dialog to the user and regardless of whether or not unsaved changes would be lost. When a session is closed the application will receive this signal soon after having responded to a save message. +

+

1.2.2.2. Open

+
+
+/nsm/client/open s:path_to_instance_specific_project s:display_name s:client_id
+
+

+

+

+If a project exists at the path, the client MUST immediately open it. +

+

+If a project does not exist at the path, then the client MUST immediately create and open a new one at the specified path or, for clients which hold all their state in memory, store the path for later use when responding to the save message. +

+

+No file or directory will be created at the specified path by the server. It is up to the client to create what it needs. +

+

+For clients which HAVE NOT specified the :switch: capability, the open message will only be delivered once, immediately following the announce response. +

+

+For clients which HAVE specified the :switch: capability, the client MUST immediately switch to the specified project or create a new one if it doesn't exist. +

+

+Clients which are incapable of switching projects or are prone to crashing upon switching MUST NOT include :switch: in their capability string. +

+

+If the user the is allowed to run two or more instances of the application simultaneously (that is to say, there is no technical limitation preventing them from doing so, even if it doesn't make sense to the author), then such an application MUST PRE-PEND the provided client_id string to any names it registers with common subsystems (e.g. JACK client names). This ensures that multiple instances of the same application can be restored in any order without scrambling the JACK connections or causing other conflicts. The provided client_id will be a concatenation of the value of application_name sent by the client in its announce message and a unique identifier. Therefore, applications which create single JACK clients can use the value of client_id directly as their JACK client name. Applications which register multiple JACK clients (e.g. Non-Mixer) MUST PRE-PEND client_id value to the client names they register with JACK and the application determined part MUST be unique for that (JACK) client. +

+

+For example, a suitable JACK client name would be: +

+
+
+$CLIENT_ID/track-1
+
+

+Note that this means that the application MUST NOT register with JACK (or any other subsystem requiring unique names) until it receives an open message from NSM. Likewise, applications with the :switch: capability should close their JACK clients and re-create them with using the new client_id. Re-registering is necessary because the JACK API does currently support renaming existing clients, although this is a sorely needed addition. +

+

+A response is REQUIRED as soon as the open operation has been completed. Ongoing progress may be indicated by sending messages to /nsm/client/progress. +

+
1.2.2.2.1. Response
+

+The client MUST respond to the 'open' message with: +

+
+
+/reply "/nsm/client/open" s:message
+
+

+Or +

+
+
+/error "/nsm/client/open" i:error_code s:message
+
+
+ + + + + + + +
+Fig. 1.4. Response Codes +
CodeMeaning
ERRGeneral Error
ERR_BAD_PROJECTAn existing project file was found to be corrupt
ERR_CREATE_FAILEDA new project could not be created
ERR_UNSAVED_CHANGESUnsaved changes would be lost
ERR_NOT_NOWOperation cannot be completed at this time
+

1.2.2.3. Save

+
+
+/nsm/client/save
+
+

+The client MUST immediately save the current application specific project data to the project path previously established in the 'open' message. UNDER NO CIRCUMSTANCES should a dialog be displayed to the user (giving a choice of where to save, etc.) This message will only be delivered after a previous open message, and may be sent any number of times within the course of a session (including zero, if the user aborts the session). +

+
1.2.2.3.1. Response
+

+The client MUST respond to the 'save' message with: +

+
+
+/reply "/nsm/client/save" s:message
+
+

+Or +

+
+
+/error "/nsm/client/save" i:error_code s:message
+
+
+ + + + + +
+Fig. 1.5. Response Codes +
CodeMeaning
ERRGeneral Error
ERR_SAVE_FAILEDProject could not be saved
ERR_NOT_NOWOperation cannot be completed at this time
+

1.2.3. Server to Client Informational Messages

+

1.2.3.1. 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 are available. +

+
+
+/nsm/client/session_is_loaded
+
+

+This message does not require a response. +

+

1.2.4. Client to Server Informational Messages

+

+These are optional messages which a client can send to the NSM server to inform it about the client's status. The client should not expect any reply to these messages. If a client intends to send a message described in this section, then it MUST add the appropriate value to its capabilities string when composing the announce message. +

+

1.2.4.1. Progress

+
+
+/nsm/client/progress f:progress
+
+

+For potentially time-consuming operations, such as save and open, progress updates may be indicated throughout the duration by sending a floating point value between 0.0 and 1.0, 1.0 indicating completion, to the NSM server. +

+

+The server will not send a response to these messages, but will relay the information to the user. +

+

+Note that even when using the progress feature, the final response to the save or open message is still REQUIRED. +

+

+Clients which intend to send progress messages should include :progress: in their announce capability string. +

+

1.2.4.2. Dirtiness

+
+
+/nsm/client/is_dirty
+
+
+
+/nsm/client/is_clean
+
+

+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. +

+

+Clients which have this capability should include :dirty: in their announce capability string. +

+

1.2.4.3. Status Messages

+
+
+/nsm/client/message i:priority s:message
+
+

+Clients may send miscellaneous status updates to the server for possible display to the user. This may simply be chatter that is normally written to the console. priority should be a number from 0 to 3, 3 being the most important. +

+

+Clients which have this capability should include :message: in their announce capability string. +

+

1.2.5. Error Code Definitions

+
+ + + + + + + + + + + + +
+Fig. 1.6. Error Code Definitions +
Symbolic NameInteger Value
ERR_GENERAL-1
ERR_INCOMPATIBLE_API-2
ERR_BLACKLISTED-3
ERR_LAUNCH_FAILED-4
ERR_NO_SUCH_FILE-5
ERR_NO_SESSION_OPEN-6
ERR_UNSAVED_CHANGES-7
ERR_NOT_NOW-8
ERR_BAD_PROJECT-9
ERR_CREATE_FAILED-10
+

1.2.6. Client to Server Control

+

+If the server publishes the :server_control: capability, then clients can also initiate action by the server. For example, a client might implement a 'Save All' option which sends a /nsm/server/save message to the server, rather than requiring the user to switch to the session management interface to effect the save. +

+

1.2.7. Server Control API

+

+The session manager not only manages clients via OSC, but it is itself controlled via OSC messages. The server responds to the following messages. +

+

+All of the following messages will be responded to back to the sender's address with one of the two following messages: +

+
+
+/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 error. +

+

+The possible errors are: +

+
+ + + + + + + +
+Fig. 1.7. Responses +
CodeMeaning
ERR_GENERALGeneral Error
ERR_LAUNCH_FAILEDLaunch failed
ERR_NO_SUCH_FILENo such file
ERR_NO_SESSIONNo session is open
ERR_UNSAVED_CHANGESUnsaved changes would be lost
+
+
/nsm/server/add s:path_to_executable
+ +

+Adds a client to the current session. +

+
+
/nsm/server/save
+ +

+Saves the current session. +

+
+
/nsm/server/load s:project_name
+ +

+Saves the current session and loads a new session. +

+
+
/nsm/server/new s:project_name
+ +

+Saves the current session and creates a new session. +

+
+
/nsm/server/close
+ +

+Saves and closes the current session. +

+
+
/nsm/server/abort
+ +

+Closes the current session WITHOUT SAVING +

+
+
/nsm/server/quit
+ +

+Saves and closes the current session and terminates the server. +

+
+
/nsm/server/duplicate s:new_project
+ +

+

+
/nsm/server/list
+ +

+Lists available projects. One /reply message will be sent for each existing project. +

+

1.2.7.1. Client to Client Communication

+

+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. +

+

+The format of this message is as follows: +

+
+
+/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). +

+

+For example the message: +

+
+
+/nsm/server/broadcast /tempomap/update "0,120,4/4:12351234,240,4/4"
+
+

+Would broadcast the following message to all clients in the session (except for the sender), some of which might respond to the message by updating their own tempo maps. +

+
+
+/tempomap/update "0,120,4/4:12351234,240,4/4"
+
+

+The Non programs use this feature to establish peer to peer OSC communication by symbolic names (client IDs) without having to remember the OSC URLs of peers across sessions. +

+
+ + diff --git a/session/doc/NSM.mu b/session/doc/API.mu similarity index 94% rename from session/doc/NSM.mu rename to session/doc/API.mu index 9b669c0..bff68c7 100644 --- a/session/doc/NSM.mu +++ b/session/doc/API.mu @@ -2,10 +2,11 @@ ! title Non Session Management API ! author Jonathan Moore Liles #(email,male@tuxfamily.org) ! date August 1, 2010 +! revision Version 0.8 -- Table Of Contents -: Non Session Management API version 0.8 +: Non Session Management API The Non Session Management API is used by the various components of the Non audio production suite to allow any number of independent @@ -109,6 +110,11 @@ `lo\_send\_from` method of liblo or its equivalent, as the server uses the return addresses to distinguish between clients. + Clients *MUST* create thier OSC servers using the same protocol + (UDP,TCP) as found in `NSM\_URL`. liblo is lacking a robust TCP + implementation at the time of writing, but in the future it may be + useful. + ::: Establishing a Connection :::: Announce @@ -118,7 +124,7 @@ to the provided address as soon as it is ready to respond to the `\/nsm\/client\/open` event: -> /nsm/server/announce s:application_name s:capabilities i:api_version_major i:api_version_minor i:pid +> /nsm/server/announce s:application_name s:capabilities s:executable_name i:api_version_major i:api_version_minor i:pid If `NSM\_URL` is undefined, invalid, or unreachable, then the client should proceed assuming that session management is unavailable. @@ -136,7 +142,7 @@ for passing to JACK. This is probably the most complex requirement of the NSM API, but it isn't difficult to implement, especially if the application simply wishes to delay its initialization process - for up to one second while awaiting the `announce` reply and + breifly while awaiting the `announce` reply and subsequent `open` message. `capabilities` *MUST* be a string containing a colon separated list @@ -171,6 +177,7 @@ // Available Server Capabilities [[ Name, Description [[ server_control, client-to-server control +[[ broadcast, server responds to /nsm/server/broadcast message A client should not consider itself to be under session management until it receives this response. For example, the Non applications @@ -285,7 +292,7 @@ because the JACK API does currently support renaming existing clients, although this is a sorely needed addition. - A response is *REQUIRED* *AFTER* the open operation has been + A response is *REQUIRED* as soon as the open operation has been completed. Ongoing progress may be indicated by sending messages to `\/nsm\/client\/progress`. @@ -490,14 +497,14 @@ server. Clients may send messages to the server at the path - `\/broadcast`. + `\/nsm\/server\/broadcast`. The format of this message is as follows: -> /nsm/server/broadcast [any parameters...] +> /nsm/server/broadcast s:path [arguments...] The message will then be relayed to all clients in the session at - the path `\/nsm\/client\/broadcast`. + the path `path` (with the arguments shifted by one). For example the message: @@ -505,12 +512,10 @@ Would broadcast the following message to all clients in the session (except for the sender), some of which might respond to the message - by updating their own tempo maps. Here the string - `\/tempomap\/update` is not an OSC path but merely a name-space - qualifier by which the receivers can filter messages. + by updating their own tempo maps. -> /nsm/client/broadcast /tempomap/update "0,120,4/4:12351234,240,4/4" +> /tempomap/update "0,120,4/4:12351234,240,4/4" - Clients might use this feature to establish peer to peer OSC - communication with symbolic names without having to remember the OSC - ports of peers across sessions. + The Non programs use this feature to establish peer to peer OSC + communication by symbolic names (client IDs) without having to + remember the OSC URLs of peers across sessions. diff --git a/session/doc/MANUAL.mu b/session/doc/MANUAL.mu new file mode 100644 index 0000000..58e65c3 --- /dev/null +++ b/session/doc/MANUAL.mu @@ -0,0 +1,242 @@ + +! title The Non Session Manager User Manual +! author Jonathan Moore Liles #(email,male@tuxfamily.org) +! date February 25, 2012 + +-- Table Of Contents + +: User Manual + + +:: The Non Session Manager Graphical Interface + +/ Non Session Manager +< nsm.png + + 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/. + +::: Session Operations + +:::: 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 in the left hand half 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 in the hand panel of 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. + +:::: 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. + +:::: Abort + + This option closes the current session *without saving*. + +:::: Save + + This option saves the current session, instructing clients + supporting the NSM protocol to save. + +:::: 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. + + 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. + + Advanced users may choose to use symbolic links to organize their + sessions. For example, one could store all their songs under + 'Songs\/' and create an 'Albums/\' directory structure which uses + symlinks to point at the songs stored. + +:::: 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 Template\/), 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. + +:::: 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). + +::: 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. + +:: 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 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 default /Session + Root/ is "$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 completely 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 (e.g. by your desktop + environment's program launch menu). + + +::: Multiple NSMD Instance + + When dealing with multiple instances of nsmd, whether they be on the + same machine or different machines, it is most convenient to use + fixed port numbers. + +:::: Distributed Session Management + + In some situations it is necessary to have different audio programs + running on different machines connected by S\/PDIF\/or 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 by itself. + + Needless to say, these configurations have historically been + extremely difficult to manage--requiring heavy scripting 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: + ++ We want to distribute a session across two hosts, Host-A and Host-B, on the local area network ++ Each host has a completely independent file system (i.e. not NFS) ++ 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. + +:::: 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. The instances are + prohibited from opening two instances of the same session. + + Imagining a useful application of this feature is left as an + exercise for the user. diff --git a/session/doc/Makefile b/session/doc/Makefile new file mode 100644 index 0000000..c727c52 --- /dev/null +++ b/session/doc/Makefile @@ -0,0 +1,25 @@ + +SRCS=$(wildcard *.mu) + +OBJS=$(SRCS:.mu=.html) + +%.html: %.mu + @ echo Mupping $<... + @ mup.wrapper html $< + +.PHONY: all clean + +all: $(OBJS) + +upload: all + @ ln -sf OVERVIEW.html index.html + @ rsync -L mup.css MANUAL.html index.html *.png ssh.tuxfamily.org:/home/non/non-mixer.tuxfamily.org-web/htdocs + @ rm -f index.html + +install: + @ mkdir -p $(DOCUMENT_PATH)/non-session-manager + @ cp $(OBJS) *.png mup.css ../../COPYING $(DOCUMENT_PATH)/non-session-manager +# @ ln -sf $(PIXMAP_PATH)/logo.png $(DOCUMENT_PATH) + +clean: + rm -f $(OBJS) diff --git a/session/doc/logo.png b/session/doc/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..a3753fc9de5fa6863c298a41bc1df90dd7ac4ecc GIT binary patch literal 23415 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 e%=~6Aulz63mxzafS1FJH0000 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + NON SESSION MANAGER + + + + + + + + + NON SESSION MANAGER + + + diff --git a/session/src/nsmd.C b/session/src/nsmd.C index 7de8e3a..86282ed 100644 --- a/session/src/nsmd.C +++ b/session/src/nsmd.C @@ -752,7 +752,7 @@ OSC_HANDLER( announce ) "Howdy, what took you so long?" : "Well hello, stranger. Welcome to the party.", APP_TITLE, - ":server-control:" ); + ":server-control:broadcast:" ); if ( gui_is_active ) { diff --git a/timeline/doc/MANUAL.html b/timeline/doc/MANUAL.html index 61d5dfc..c6f2a9b 100644 --- a/timeline/doc/MANUAL.html +++ b/timeline/doc/MANUAL.html @@ -73,7 +73,15 @@ June 20, 2008
  • 1.1.11. Automation -
    +

    1. User Manual

    1.1. The Timeline Editor

    @@ -312,11 +320,52 @@ Add an annotation sequence to a track by right-clicking on the track header to b
    fig. 1.13

    -Each track may have any number of control sequences attached to it. A control sequence comprises a series of points in time (X axis) and intensity (Y axis). Add a control sequence to a track by picking Add control from its context menu. A control sequence may be named by right clicking on it to bring up the context menu, then picking 'Rename'. The output of a control sequence is similar control voltages generated by analog equipment. A control sequence can be used to control anything that can accept CV style input. Useful targets include the Non Mixer, and SpiralSynthModular. +Each track may have any number of control sequences attached to it. A control sequence comprises a series of points in time (X axis) and intensity (Y axis). Add a control sequence to a track by picking Add control from its context menu. A control sequence may be named by right clicking on it to bring up the context menu, then picking Rename. The output of a control sequence can be set to one of two modes Control Voltage (JACK) or Control Signal (OSC).

    +
    + +
    NOTE: +Since release 1.1.0, Control Signal is now the default output mode for Control Sequences. +If you have existing projects and wish to continue using Control Voltage output, +you must set the mode to Control Voltage manually. +
    +

    Click anywhere on the control sequence to add a new control point. Control points can be dragged around and selected just like other objects on the timeline. They can even be part of the same selection as regions, permitting you to move regions and control points together in lock-step.

    +

    1.1.11.1. Output Mode

    +
    1.1.11.1.1. Control Voltage
    +

    +Control Voltage is similar to control voltages generated by analog equipment. Setting the Control Sequence mode to Control Voltage will create a JACK output port whose contents simulate an analogue Control Voltage signal. This mode can be used to control anything that accepts CV style input. Useful targets include the Non-Mixer, and SpiralSynthModular. +

    +
    1.1.11.1.2. Control Signal
    +

    +The Control Signal mode uses a signal routing layer on top of the OSC protocol to intelligently and automatically discover and control any module parameter in Non-Mixer. The output of one Control Sequence may be connected to any number of Control Signal inputs available in Non-Mixer. +

    +

    +Control Signals are more efficient than Control Voltages when a large number of parameters are being automated. +

    +
    + + + +
    +Fig. 1.14. Control Signal Connection +
    fig. 1.14
    +

    1.1.11.2. Interpolation Mode

    +
    + + + +
    +Fig. 1.15. Effect of Interpolation Mode +
    fig. 1.15
    +

    +The interpolation mode controls how the relatively small number of Control Points is transformed into a continuously varying signal. The options are None and Linear. +

    +

    +When its Interpolation mode is set to None, a Control Sequence will output discrete jumps in value upon the playhead passing each Control Point. This can be useful when instantaneous changes in value are required, such as sudden muting, or changing the modes of plugins. +

    diff --git a/timeline/doc/MANUAL.mu b/timeline/doc/MANUAL.mu index a7f0670..b316de6 100644 --- a/timeline/doc/MANUAL.mu +++ b/timeline/doc/MANUAL.mu @@ -267,20 +267,61 @@ / Control Sequence < automation.png - Each track may have any number of control sequences attached to it. A control - sequence comprises a series of points in time (X axis) and intensity (Y - axis). Add a control sequence to a track by picking /Add control/ from its - context menu. A control sequence may be named by right clicking on it to - bring up the context menu, then picking 'Rename'. The output of a control - sequence is similar control voltages generated by analog equipment. A control - sequence can be used to control anything that can accept CV style input. - Useful targets include the Non Mixer, and SpiralSynthModular. + Each track may have any number of control sequences attached to + it. A control sequence comprises a series of points in time (X axis) + and intensity (Y axis). Add a control sequence to a track by picking + /Add control/ from its context menu. A control sequence may be named + by right clicking on it to bring up the context menu, then picking + /Rename/. The output of a control sequence can be set to one of two + modes /Control Voltage \(JACK\)/ or /Control Signal \(OSC\)/. + +{ NOTE: +{ Since release 1.1.0, Control Signal is now the default output mode for Control Sequences. +{ If you have existing projects and wish to continue using Control Voltage output, +{ you must set the mode to Control Voltage manually. Click anywhere on the control sequence to add a new control point. Control points can be dragged around and selected just like other objects on the timeline. They can even be part of the same selection as regions, permitting you to move regions and control points together in lock-step. -# :: The Mixer -# ::: Tracks -# ::: Panning +:::: Output Mode + +::::: Control Voltage + + /Control Voltage/ is similar to control voltages generated by analog + equipment. Setting the Control Sequence mode to Control Voltage will + create a JACK output port whose contents simulate an analogue + Control Voltage signal. This mode can be used to control anything + that accepts CV style input. Useful targets include the Non-Mixer, + and SpiralSynthModular. + +::::: Control Signal + + The /Control Signal/ mode uses a signal routing layer on top of the + OSC protocol to intelligently and automatically discover and control + any module parameter in Non-Mixer. The output of one Control + Sequence may be connected to any number of Control Signal inputs + available in Non-Mixer. + + Control Signals are more efficient than Control Voltages when a + large number of parameters are being automated. + +/ Control Signal Connection +< control-signals.png + +:::: Interpolation Mode + +/ Effect of Interpolation Mode +< control-points.png + + The interpolation mode controls how the relatively small number of + Control Points is transformed into a continuously varying + signal. The options are /None/ and /Linear/. + + When its Interpolation mode is set to /None/, a Control Sequence + will output discrete jumps in value upon the playhead passing each + Control Point. This can be useful when instantaneous changes in + value are required, such as sudden muting, or changing the modes of + plugins. + diff --git a/timeline/doc/OVERVIEW.html b/timeline/doc/OVERVIEW.html index 9ea0139..0e29682 100644 --- a/timeline/doc/OVERVIEW.html +++ b/timeline/doc/OVERVIEW.html @@ -59,12 +59,15 @@ March 1, 2008

    1. Overview

    +
    + +
    fig.

    1.1. Description

    The Non DAW is a powerful, reliable and fast modular Digital Audio Workstation system, released under the GNU General Public License (GPL). It utilizes the JACK Audio Connection Kit for inter-application audio I/O and the FLTK GUI toolkit for a fast and lightweight user interface.

    -Please see the Manual for more information. +Please see the Manual for more information (and lots of screenshots).

    1.2. What it is not

    diff --git a/timeline/doc/OVERVIEW.mu b/timeline/doc/OVERVIEW.mu index 81ad15e..b86fb92 100644 --- a/timeline/doc/OVERVIEW.mu +++ b/timeline/doc/OVERVIEW.mu @@ -8,6 +8,8 @@ : Overview +< tle.png + :: Description The Non DAW is a powerful, reliable and fast modular Digital Audio @@ -16,7 +18,8 @@ inter-application audio I\/O and the FLTK GUI toolkit for a fast and lightweight user interface. - Please see the #(url,MANUAL.html,Manual) for more information. + Please see the #(url,MANUAL.html,Manual) for more information (and + lots of screenshots). :: What it is not @@ -257,6 +260,8 @@ * FLTK >= 1.1.7 (with `fluid`) * JACK >= 0.103.0 * libsndfile >= 0.18.0 +* liblo >= 0.26 +* libsigc++ >= 2.0.0 ; Community diff --git a/timeline/doc/crappy-screenshot.png b/timeline/doc/crappy-screenshot.png deleted file mode 100644 index 3bc5f0c37bfc6e4ffd998a4e81c8418dafbe4cc5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 106085 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 AZvX%Q