Plugins
A panel for any plugin, without drawing one.
omx-panel reads what a plugin declares about itself and produces its panel: the controls, their ranges and their grouping. Nobody draws it by hand.
01
What you get.
Give any LV2 or CLAP plugin a panel, from the plugin's own declaration:
- a MOD GUI, the format MOD and Zynthian draw;
- pages for a controller, eight controls to a page;
- a layout for a host that draws its own panel.
Every panel wears the omx look, vintage or modern.
02
The three steps.
Step 1
The plugin declares itself.
A plugin states its controls: symbol, travel, default, label and group. That statement, the descriptor, is the only input. A descriptor comes from scanning the plugin, or from a package that installs it, such as
omx-plugins. The panel never holds a range of its own.Step 2
omx-panel lays it out.
It orders the controls into sections, gives each a role, picks the family the controls make together and cuts the pages of eight a controller shows. When the plugin declares a panel of its own, that panel wins.
Step 3
omx-panel writes the panel.
For MOD and Zynthian it writes a MOD GUI into the plugin's LV2 bundle:
modgui.ttland amodgui/directory. A toggle becomes a switch, a choice or a short integer travel a selector, and every other travel a knob.
The command takes a descriptor file and the bundle to write into:
omx-panel modgui --descriptor my-plugin.json --out my-plugin.lv2
omx-panel modgui --descriptor my-plugin.json --out my-plugin.lv2 --check
The second line writes nothing: it compares the bundle with what the descriptor would produce and refuses a stale, missing or extra file.
03
For a plugin author.
A plugin that wants its own drawing ships a skin package: a directory named after the plugin, holding a skin.json that says how the panel is drawn and the licence of everything in it. Ranges, units and scales stay in the plugin's description; the skin refers to controls by id. Check a package before you install it:
omx-panel validate ./my-plugin-skin
A plugin that already ships a MOD GUI does not start from nothing: omx-panel import reads the bundle and the plugin's licence and writes a skin package from them. A bundle whose licence is missing or not on the allow-list is refused with a named code, and nothing is written.
04
Install.
On Fedora:
sudo dnf install https://www.openmixer.org/rpm/openmixer-release.noarch.rpm
sudo dnf install omx-panel
On Debian and Raspberry Pi OS:
curl -fsSLO https://www.openmixer.org/deb/openmixer-release.deb && sudo apt install ./openmixer-release.deb
sudo apt update
sudo apt install omx-panel
From the npm registry:
npm install @openmixer/omx-panel
05
A worked example.
A worked example takes a third-party LV2 and CLAP plugin from its declaration to a generated panel.
The rest of the plugins section
What the packages ship
The omx plugins in LV2 and CLAP, and how to install them on Fedora, Debian and Raspberry Pi OS.
Third-party plugins
Installing LV2 and CLAP plugins from your distribution, and what the console does with them.
Names reference
Repository, pkg-config, RPM, DEB and npm names of every piece.