JACK Plugin launcher source code
Go to file
Nedko Arnaudov a187cbd027 loader.h: documentation improvements 2023-12-26 20:19:39 +02:00
doc Use README.rst as mainpage for libjpl API docs 2023-12-26 16:01:36 +02:00
wafautooptions@87a720d8ad wscript: add --devmode option 2023-06-29 21:12:13 +03:00
waftoolchainflags@e6add7a50d Update waf-toolchain-flags submodule to latest 2023-06-29 21:24:11 +03:00
.gitignore doxygenize ladicore 2023-11-16 19:24:30 +02:00
.gitmodules doxygenize ladicore 2023-11-16 19:24:30 +02:00
COPYING Build libjpl.so 2023-06-29 22:37:37 +03:00
GNUmakefile README.rst -> README.md 2023-12-26 16:44:45 +02:00
README.md README.md: Add WIP note 2023-12-26 16:51:50 +02:00
appman.c skeleton appman.c (cdbus) 2023-12-09 16:19:35 +02:00
appman_defs.c regenerate appan_defs.c so to get the new header 2023-12-26 17:59:31 +02:00
catdup.c catdup.c: catdup_array() array parameter type changed to "const char *" 2023-12-09 02:13:40 +02:00
catdup.h cardup.h: Fix file description 2023-12-09 02:24:16 +02:00
dbus.service.in Initial version jpld D-Bus service 2023-12-26 12:02:03 +02:00
io.qt.applicationmanager.applicationinterface.xml Import Qt Application Manager interfaces 2023-06-20 04:15:31 +03:00
io.qt.applicationmanager.runtimeinterface.xml Import Qt Application Manager interfaces 2023-06-20 04:15:31 +03:00
jpld.c Initial version jpld D-Bus service 2023-12-26 12:02:03 +02:00
klist.h Switch from kernel style docs to doxygen format 2023-11-18 14:03:22 +02:00
loader.c childs -> zombies 2023-12-26 17:46:31 +02:00
loader.h loader.h: documentation improvements 2023-12-26 20:19:39 +02:00
main.c Fix build from gitversion.h-less source trees 2022-08-29 19:16:35 +03:00
org.ladish.applicationmanager.xml skeleton appman.c (cdbus) 2023-12-09 16:19:35 +02:00
waf Upgrade waf to 2.0.26 2023-12-09 14:12:16 +02:00
wscript wscript: in devmode, use -Wno-unused-parameter for now (TODO) 2023-12-26 18:14:59 +02:00

README.md

Abstract

JACK Plugin Launcher is project for providing improved environment that is well suited for applications in a JACK Audio Connection Kit modular system.

Jack Plugin is a term for libjack.so linked program that executes in one or more dedicated processes.

Goals

  • For improved DSP performance and recovery from crashes that occured in the UI parts of the Jack Plugins, JACK Plugins are facilitated to run with separate DSP and UI OS-level processes.
  • Multi-protocol session management approach,like the one used in LADISH implementation of liblash and in nsm-proxy used in NON Session, RaySession & New Session management systems, for handling incompatibilities between session managers and apps (out of process plugins) and providing better overal experience in modular systems using jack programs for a diverse set of sesison management protocols.
  • Possibility for each Jack Plugin to have multiple DSP backends. Some projected backend ideas:
    • non-optimized code that runs on any compatible CPU of given ISA
    • optimized code that runs only on matching CPUs
    • code optimized for running on iGPU or dGPU
    • code for running in possible future implementation of jack server in kernel mode.
    • Source code to build during load (FAUST, llvm, etc.)
  • Possibility for each Jack Plugin to have multiple UI frontends. Some projected frontend ideas:
    • X11 UI
    • ncurses (with optional sixel support) UI, via tmux or screen
    • (HTTP) Web UI
    • GPU accelerated UI for GLX
    • GPU accelerated UI for Wayland
    • GPU accelerated UI for EGL and linux framebuffer
  • Settings for tweaking desired behaviour. (Good) built-in defaults and system-wide (/etc), user-wide (~/) and per session managment project overrides of the settings. Some projected ideas for settings:
    • Order of preference for backends
    • Order of preference for frontends
    • Tweaks for LD_LIBRARY_PATH and other environment variables
    • whether to use tmux, screen or some other terminal emulator like xterm (X11) for starting new command-line shell or ncruses UI.
  • Execution on other machine in the network, via ssh/libssh/gabriel. Facilitate public / private key setup for such deployments.

For installation instructions, read the doc/INSTALL.rst file. If you are a (linux or libre) distribution packager, read the doc/PACKAGING.rst file.

Source code

NOTE: This project is Work In Progress