LASH Audio Session Handler

News | About | Clients | Documentation | Download | Project Page

LASH is a session management system for JACK and ALSA audio applications on GNU/Linux. It is an implementation of a proposal that originated from this discussion. Its aim is to allow you to have many different audio programs running at once, to save their setup, close them down and then easily reload the setup at some other time. LASH doesn't deal with any kind of audio data itself; it just runs programs, deals with saving/loading (arbitrary) data and connects different kinds of virtual audio ports together (currently JACK and ALSA sequencer ports). It can also be used to move entire sessions between computers, or post sessions on the Internet for download.



Here is an extract from Juan's proposal (shamelessly stolen from AGNULA):

Problems with the IPC distibuted app framework approach

The Unix environment has always characterized itself for its high amount of versatility. This is done by following a philosophy based on "make small apps, and make them interoperate as much as possible". Unix has so far achieved this interoperation through pipes and very versatile command line environments. Nowadays, the new APIs found in recent apps also gear for this. A good example is the audio area, where transport APIs such JACK or ALSAseq provide great interoperatibility between applications. This way, the user is able to do, with many programs interconnected through IPC means, the same as it's done on other plataforms (such as Windows/Mac) with big monolithic programs with follow the host-app approach. The IPC approach gives users and programmers more freedom when writing applications, since it doesn't expect a certain program to run on a specific framework, host app or library, and frees the "controller" programs from tasks such as routing, control and interconnection. However this approach as it is now has a problem; it often becomes hard or almost impossible to keep "projects" organized, or as something heterogeneous. Every app saves its own file format or project files, and many dont even support saving, since they are run from commandline. It is clear that becomes impossible to store a "project" in a single file, either a reference or description of what was worked on, or even a simple compressed file containing all the data from the applications, details of API routing, etc which could be zipped and archived for later work, sent to a friend, or just ready for usage in another workstation.

Proposed solution

This proposal aims to provide a way to organize the multiple applications managed by the user when working on a project. In other words the aim is to create a workspace where the user can launch as many "client" applications as needed from a "server" application, which will be able to store and retrieve the configuration of any "client" application at the user will. This framework will also be able to save current layout state of all "clients" running (including the ones in charge of interconnection) into single project file. Basically the usre will be able to "suspend" and "restore" sessions at anytime, and in different locations as if it was a simple program status file. The creation of this API also encourages further usage of IPC frameworks by providing an easy way of managing complex application interconnection layouts.


Please let me know if you know of a LASH client that is not listed here.

(Non-bundled) Clients currently with LASH support:

More coming soon (support has been completed for Seq24, Meterbridge, and ZynAddSubFX, and is in progress for Ardour, among others)


The LASH manual is included with the source distribution and can be generated in various formats (HTML single page, HTML many pages, PDF, info, etc). The single page HTML version is available online

Valid XHTML 1.0 Strict