Merge branch 'stable' into 'main'
[ladish.git] / README.adoc
blobe22276329d28045c79d1abd40123fbbf47d2be6a
1 :title: LADI Session Handler
2 :docinfo: private-head,private-header
3 :keywords: LADI, JACK, jack-audio-connection-kit, session management
5 = LADISH
7 LADI Session Handler or simply ladish is a session management system
8 for https://jackaudio.org[JACK] applications on https://kernel.org/[GNU/Linux].
9 Its aim is to allow you to have many different audio programs running
10 at once, to save their setup, close them down and then easily reload
11 the setup at some other time. ladish doesn\'t deal with any kind of
12 audio or MIDI data itself; it just runs programs, deals with
13 saving/loading (arbitrary) data and connects JACK ports together.
15 The LADISH graphical interface (GTK+ based reference front end)
16 image:https://static.lwn.net/images/2013/audio-session/1-gladish-reteo.png["gladish screenshot", link="https://lwn.net/Articles/533594/", width="100%"]
18 The Claudia LADISH front end (Python + Qt based)
19 image:https://static.lwn.net/images/2013/audio-session/2-claudia.png["Claudia screenshot", link="https://lwn.net/Articles/533594/", width="100%"]
21 Features:
23  * Save and restore sets of JACK (audio and MIDI) enabled
24    applications.
25  * Subgraph management, the Studio & Rooms concept.
26    Provide JACK clients with virtual hardware ports, so projects can
27    be transferred (or backups restored) between computers running
28    different hardware and backups. 
29    Allows to decouple projects (loaded in a Room) from
30    hardware audio IO used in particular Studio.
31    A virtual jack-multicore cable connects room IO ports
32    to hardware IO ports.
33  * Don't require session handling library to be used. There is no need
34    of such library for restoring connections between JACK clients.
35    LADISH is able to manage JACK apps that don\'t link to liblash (or liblo).
36    This is known as L0 (level zero) in LADISH.
37  * Seamless handling of apps that use ALSA sequencer ports.
38    This is achieved by use of a2jmidid and libalsapid.so.
39    The former creates jack-midi ports for the alsa sequencer ones.
40    The latter reports the alsa application process ID to ladishd,
41    so that ladishd can associate the a2jmidid-created ports with application.
42  * Flow canvas based GUI. Positions of elements on the canvas are
43    saved/restored.
44  * Allow clients to use external storage to save their state. This
45    includes storing internal state to non-filesystem place like memory
46    of a hardware synth. This also includes storing client internal
47    state (client project data) in a way that is not directly bound to
48    ladish project.
50 Among project future goals are:
52  * Support for pipewire setups (in addition to JACK1 and JACK2)
53  * List of available JACK applications.
54  * Hierarchical and/or tag-based organization of projects.
55  * Support for applications that create more than one jack client per process
56  * Support for applications that create use more than one jack client process
57  * https://ladish.org/nsm-proto.html[Non Session Manager protocol] support
58  * https://new-session-manager.jackaudio.org/api/index.html[New Session Manager protocol] support
59  * Collaborate with the X11 window manager so window properties like
60    window position, virtual desktop and screen (multimonitor) are
61    saved/restored.
62  * Distributed studio - network connected computers. Netjack
63    configuration is part of the studio and thus is saved/restored.
64    Saving/restoring state in multi-machine network
65  * Ability to move entire sessions between computers,
66    or post sessions on the Internet for download.
67    Import/export operations, as opposed to save/load. Save/load
68    operate in current system and may cause saving data outside of
69    project itself (external storage). Import/export uses/produces
70    "tarball" suitable for transferring session data over network to
71    other computer or storing it in a backup archive.
72  * Session versioning via Git
74 Tarballs:
76  * https://dl.ladish.org/ladish/
78 GIT repositories:
80  * https://gitea.ladish.org/LADI/ladish[Upstream development GIT repository] +
81    Self-hosted upstream
82  * https://github.com/LADI/ladish.git[Primary backup GIT repository at github.com] +
83    Cloud hosted
84  * https://repo.or.cz/ladish.git[Secondary backup GIT repository at repo.or.cz] +
85    Cloud hosted
87 LADI Session Handler was forked from the
88 https://lac.linuxaudio.org/2009/cdm/Thursday/02_Alasuutari/02.pdf[D-Bus-ified LASH project].
89 Things that LADISH can do but LASH (D-Bus-ified or not) cannot:
91  * Subgraph management, the Studio & Rooms concept.
92    Allows to decouple projects (loaded in a Room) from
93    hardware audio IO used in particular Studio.
94    A virtual jack-multicore cable connects room IO ports
95    to hardware IO ports.
96  * Don't require session handling library to be used. There is no need
97    of such library for restoring connections between JACK clients.
98    LADISH is able to manage JACK apps that don\'t link to liblash (or liblo).
99    This is known as L0 (level zero) in LADISH.
100  * Seamless handling of apps that use ALSA sequencer ports.
101    This is achieved by use of a2jmidid and libalsapid.so.
102    The former creates jack-midi ports for the alsa sequencer ones.
103    The latter reports the alsa application process ID to ladishd,
104    so that ladishd can associate the a2jmidid-created ports with application.
106 See also:
108  * https://gitea.ladish.org/LADI/ladish[LADI/ladish at Gitea]
109  * https://github.com/LADI/[LADI at GitHub]
110  * https://jackdbus.ladish.org/[jackdbus]
111  * https://lac.linuxaudio.org/2009/cdm/Thursday/02_Alasuutari/02.pdf[Juuso ALASUUTARI, LASH Audio Session Handler: Past, Present, and Future]
113 For related discussions, you are invited to join
114 https://libera.chat/[Libera.Chat] channel #ladi