Skip to content

flathub/org.freedesktop.LinuxAudio.BaseExtension

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 

Repository files navigation

Linux Audio base extension

This is a base package for Flatpak Linux audio plugins to allow building Linux audio plugins flatpaks.

This package only provides a definition of the extension points which are a prerequisite to build the plugins. It doesn't provide anything else, and applications that want to use audio plugins do not need to use it. Just copy the extension point definitions to your manifest.

It currently supports:

  • LV2 extension.
  • LADSPA extension.
  • VST extension.
  • VST3
  • DSSI
  • CLAP

All the above uses org.freedesktop.LinuxAudio.Plugins extension mount point.

Content

This is empty, it only provide the needed declaration for the extension points.

Application using audio plugins

Your application supports audio plugins?

Add the extension point for plugins:

"add-extensions": {
  "org.freedesktop.LinuxAudio.Plugins": {
    "directory": "extensions/Plugins",
    "version": "23.08",
    "add-ld-path": "lib",
    "merge-dirs": "ladspa;dssi;lv2;clap;vst;vst3",
    "subdirectories": true,
    "no-autodownload": true
  }
}

Depending on the format it supports, merge-dirs should be reduced to what is actually supported.

Also make sure the application find the plugins. This is done by setting some environent variable.

For LV2, it should be:

LV2_PATH=$HOME/.lv2:/app/extensions/Plugins/lv2:/app/lib/lv2

Important: Since --env in --finish-args doesn't do the variable substitution, LV2_PATH should be set in a wrapper shell script for the application.

For DSSI, LADSPA, VST and VST3 it is the same change as above, see the table below for a summary.

DSSI_PATH=/app/extensions/Plugins/dssi
LADSPA_PATH=/app/extensions/Plugins/ladspa
VST_PATH=/app/extensions/Plugins/vst
VST3_PATH=/app/extensions/Plugins/vst3

The table below summarize the mount point and environment to set. The mount point is /app/extensions/Plugins. The subdir is a subdirectory in the mount point that will have all the plugins as needed by the application host.

Format subdir env
LV2 lv2 LV2_PATH
DSSI dssi DSSI_PATH
LADSPA ladspa LADSPA_PATH
VST vst LXVST_PATH or VST_PATH
VST3 vst3 VST3_PATH

Note: LV2 must have $HOME/.lv2 in the LV2_PATH due to the LV2 specification.

Note 2: For VST, sometime the variable is VST_PATH sometime it's LXVST_PATH. An older version of the standard used the directory lxvst (this is what Ardour 6 uses, as well as Helm). All plugins in the 21.08 branch now use vst with the older name as a fallback. It is encouraged to use it in apps too as it will disappear for 22.08.

Note 3: As for VST3, it's optional and you mileage may vary, but it allow installing VST3 locally in ~/.vst3 and be visible from inside the flatpak sandbox.

This is the general case, and applications have varying degrees of adherence to standards.

Runtime considerations

Currently the base runtime is Freedesktop 23.08. Plugins and applications have to use the same runtime so you should consider this when upgrading the runtime on your application flatpak.

As of writing 21.08 and older are deprecated.

When moving to a more recent Freedestkop, branches will have to be created to keep the older versions of the plugins available. As an application you might want to consider when you want to do the upgrade.

The version specified for the extension point of the application has to match the underlying freedesktop SDK it uses and plugins are built using the branch with the same name. This will allow transitioning to a new runtime without breaking applications using the older runtime.

Plugins

You want to provide a Plugin as a Flatpak package? Build a an extension, using the base app.

org.freedesktop.LinuxAudio.Plugins is the base id for the plugin.