~hp/synthpod

Lightweight Nonlinear LV2 Plugin Container
Append Issues/Patches section to readme
Merge branch 'master' of git.forge:~hp/synthpod

refs

master
browse  log 

clone

read-only
https://git.open-music-kontrollers.ch/~hp/synthpod
read/write
git@git.open-music-kontrollers.ch:~hp/synthpod

You can also use your local clone with git send-email.

#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.

Synthpod screenshot

#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.

#ALSA

Synthpod as host built on top of ALSA with support for native ALSA audio and MIDI sequencer in/out ports. The right choice on GNU/Linux for live setups, embedded devices or when you don't need audio routing to other apps.

This standalone host supports NON session management to neatly integrate into modular setups.

#DUMMY

Synthpod as host built on top of a dummy driver, mainly useful for debugging purposes.

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)

#Optional dependencies for JACK backend

  • JACK (JACK audio connection kit)

#Optional dependencies for ALSA backend

#Optional dependencies for plugin UIs

  • libxcb (X protocol C-language Binding)
  • Gtk2 (cross-platform UI toolkit)
  • Gtk3 (cross-platform UI toolkit)
  • Qt4 (cross-platform UI toolkit)
  • Qt5 (cross-platform UI toolkit)

#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