Important message! Free Software under attack! See News

Non Session Manager

Description

The Non Session Manager is an API and an implementation for session management in the context of Linux Audio. NSM clients use a well-specified OSC protocol to communicate with the session management daemon.

See NsmPatches for patches to add NSM support to existing programs, and ApplicationsSupportingNsm for a list of applications that include NSM support in their releases.

See NsmVideos for some links to screencasts about NSM.

Note: This is the official NSM project. If you got something called "NSM" from somewhere else, either a distribution package or from project whose full name is not "Non Session Manager," or which purports to be developed and maintained by someone other than Jonathan Moore Liles, then you've got something of dubious provenance and unassured quality. Beware counterfeits and impostors.

Features

Audio Subsystem Independence

NSM does not depend directly on JACK or any other audio subsystem. This means that ALSA or OSS only applications, non-audio applications, or applications using as-yet unknown audio subsystems may participate in a session.

Saving/restoring the JACK connection graph is accomplished by the (included) JackPatch client.

Data Locality

NSM clients are required to store all project data in a location known to the user. The user should always know where all the data for a session is. Sessions can be archived with simple tools like 'tar'.

Multi-Host Sessions

NSM is the only session manager to support distrubuted sessions across multiple hosts, controllable via a single interface.

Well Defined Behavior

NSM compliant clients must present a uniform project control interface to the user. The meaning of 'save', etc. under session management is unambiguous.

Zero Direct Depenencies for Clients

NSM does not require client applications to link to any library. It only requires that they implement the published OSC API, using their choice of OSC library.

Fast Session Switching

Smart clients are able to switch projects without restarting. This vastly improves project switching times between sessions which utilize the same clients.

Heirarchical Session Layout

Sessions are organized as-named on disk in a heirarchical structure (i.e. Albums/My Album Foo/Final Mix of Bar) and can be managed (deleted, renamed, copied, etc.) with any file-manager.

Simple, Fast and Responsive User Interface

The NSM UI is simple and fast.

Real-time Status Feedback

Clients can report status information to NSM, including loading/saving progress.

Session Management Daemon Controllable via OSC

Don't like the NSM UI? You can build your own and communicate with the server via a simple OSC protocol.

Implementation

A server implementation and some helpful clients are included in the Non distribution. Please refer to the User Manual

Reference Client

The file nonlib/nsm.h represents a reference implementation of the client interface in the form of a single C header file (permissively licensed) which can be copied into your project's source tree.

Other Client Impelementations

Nils Hilbricht has written a pure Python client implementation. It can be found on github here: https://github.com/diovudau/pynsm2

API

The NSM API is formally described here

Requirements

The following libraries are required to build Non Session Manager.

  • JACK >= 0.103.0 (for JackPatch client)
  • liblo >= 0.26
  • NTK

(locked)

This work is licensed under a Creative Commons License