LASH is a session management system for ALSA and JACK audio applications on GNU/Linux. 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.
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.
· 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.
Clients currently with LASH support:
· Timemachine - A simple one-click recording program, which can start recording 10 seconds in the past. (as of version 0.3.1)
· Patchage - A modular patch bay for Jack and Alsa Midi apps. (as of version 0.2.3)
· Seq24 - A lightweight MIDI loop sequencer
· Muse - An audio and MIDI sequencer
· jack-keyboard - A virtual Jack MIDI keyboard
What's New in This Release:
· Fix small memory leak
· Fix alsa event handling problems (thanks to Karsten Wiese)