Synthpod
Lightweight Nonlinear LV2 Plugin Container
Packages
About
Synthpod is an LV2 host. It can be run as a standalone app and be used as a tool for live performances or general audio and event filtering.
It was conceptualized to fill the gap between pure textual (e.g. SuperCollider) and pure visual flow (e.g. Pure Data) audio programming paradigms.
Potential fields of application may include:
- Live audio synthesis
- Real-time event scripting
- Non-linear signal routing
- Advanced control automation
- Advanced event filtering
- Live mixing
- Live coding
- Algorithmic composition
- Interfacing to expressive controllers
The standalone host saves its state in the same format as an LV2 plugin instance,
It may be run on top of an audio system (JACK or ALSA) and on top of an event system (MIDI and OSC). It can be run with a GUI or headless. You can e.g. prepare a patch on your desktop machine and then transfer it to a wearable synth.
Synthpod takes a totally modular approach whereby it provides only the minimal necessary host infrastructure expected by a given plugin.
All additional, non strictly necessary glue shall be implemented with plugins. Synthpod e.g. can be extended with OSC via Eteroj. Sequencing and looping may be added via plugins from the Orbit bundle. When paired with realtime scripting via Moony, it turns Synthpod into a versatile realtime programmable, remote controllable LV2 host framework.
Hosts
Currently the following hosts are contained in this software bundle:
- JACK
- ALSA
- DUMMY
JACK
Synthpod as host built on top of JACK with support for native JACK audio, MIDI, OSC and CV in/out ports. The right choice on GNU/Linux for modular setups.
This standalone host supports NON session management to neatly integrate into modular setups.
Plugins
Control to CV
Convert between Control Voltage and control ports.
CV to Control
Convert between Control Voltage and control ports.
Heavyload
Just burn CPU cycles away for debugging.
Keyboard
A rudimentary graphical keyboard with a 2 octave range, mainly meant for simple test cases.
MIDI splitter
Split MIDI events based on their channel.
Panic
Silence MIDI downstream plugins upon panic.
Stereo
The Synthpod LV2 non-linear plugin container run as a plugin itself in an other host or itself. It features stereo audio in/out ports, atom event in/out ports and 4 control in/out ports.
Use this to add support for non-linear plugin routing in a strictly linear host.
Usage
Server - client
Synthpod comes as server - client combo, e.g. the server doing the DSP side of things runs in its own process and the client showing the GUI side of things runs in its own process.
By default, synthpod just runs the server. There’s a command line argument to automatically run the GUI, if you want. Please consult the manual page to find out more.
GUI
Mouse actions
Plugin actions:
- Mouse-over: show connections
- Right-click: toggle selection
- Left-click-down: start connecting
- Left-click-up: end connecting
Connection matrix actions:
- Mouse-over: show connections
- Right-click: toggle selection
- Left-click: toggle connection
- Mouse-wheel: toggle connection
Key actions
- a: (de)select all nodes
- b: start drawing selection box
- g: start moving selected nodes
- v: toggle plugin GUIs of selected nodes
- x: remove selected nodes
- i: reinstantiate selected nodes
Mandatory dependencies
- LV2 (LV2 plugin specification)
- lilv (LV2 plugin host library)
- sratom (LV2 atom serialization library)
- JACK (JACK audio connection kit)
Optional dependencies for plugin UIs
- libxcb (X protocol C-language Binding)
Build / install
git clone https://git.open-music-kontrollers.ch/~hp/synthpod
cd synthpod
meson build
cd build
ninja -j4
sudo ninja install
Issues/Patches
Please report issues to https://todo.open-music-kontrollers.ch/~hp/issues
Please submit patches to https://lists.open-music-kontrollers.ch/~hp/patches