Robin Gareus
linuxaudio.org, CiTu.fr
Linux Audio Conference 2013, Graz
LV2 (LADSPA version 2) is an open standard for plugins (and hosts), targeted at audio processing.
openGL is a cross-language, multi-platform API for rendering 2D and 3D computer graphics.
but
Specialized plugins
Important visual feedback
Huge number of controls
Dependencies between controls
Custom widgets e.g. 3D panning
Plugin and host use the same toolkit.
..but plugin & host were built with different versions
ABI (Application Binary Interface) does not match
→ conflicts of symbols
→ segfault..
Possible solutions to the API + ABI conflict:
Possible solutions to the API + ABI conflict:
Possible solutions to the API + ABI conflict:
gdk/gtk (non relocatable, problematic on win, hard on OSX)
Qt (huge framework, many edge-cases)
libx11/xcb (no windows, not on OSX by default)
libclxclient (no windows, not on OSX by default)
FLTK (different back-ends depending on
OS,..)
openGL
gdk/gtk (non relocatable, problematic on win, hard on OSX)
Qt (huge framework, many edge-cases)
libx11/xcb (no windows, not on OSX by default)
libclxclient (no windows, not on OSX by default)
FLTK (different back-ends depending on
OS,..)
openGL
gdk/gtk (non relocatable, problematic on win, hard on OSX)
Qt (huge framework, many edge-cases)
libx11/xcb (no windows, not on OSX by default)
libclxclient (no windows, not on OSX by default)
FLTK (different back-ends depending on
OS,..)
openGL
gdk/gtk (non relocatable, problematic on win, hard on OSX)
Qt (huge framework, many edge-cases)
libx11/xcb (no windows, not on OSX by default)
libclxclient (no windows, not on OSX by default)
FLTK (different back-ends depending on
OS,..)
openGL
gdk/gtk (non relocatable, problematic on win, hard on OSX)
Qt (huge framework, many edge-cases)
libx11/xcb (no windows, not on OSX by default)
libclxclient (no windows, not on OSX by default)
FLTK (different back-ends depending on
OS,..)
openGL
gdk/gtk (non relocatable, problematic on win, hard on OSX)
Qt (huge framework, many edge-cases)
libx11/xcb (no windows, not on OSX by default)
libclxclient (no windows, not on OSX by default)
FLTK (different back-ends depending on OS,..)
openGL
gdk/gtk (non relocatable, problematic on win, hard on OSX)
Qt (huge framework, many edge-cases)
libx11/xcb (no windows, not on OSX by default)
libclxclient (no windows, not on OSX by default)
FLTK (different back-ends depending on
OS,..)
openGL
There are no dedicated audio related widgets in either toolkit by default
(with exception of libclxclient and some qt stuff*).
Problems:
No widgets at all.
No default fonts.
Problems:
No widgets at all.
No default fonts.
No Desktop integration.
Advantages:
Cross-platform
Minimal (no) library dependencies,
API & ABI backwards compatible to ~1999.
Advantages:
Cross-platform
Minimal (no) library dependencies,
API & ABI backwards compatible to ~1999.
Hardware accelerated.
Advantages:
Cross-platform
Minimal (no) library dependencies,
API & ABI backwards compatible to ~1999.
Hardware accelerated.
3D (!)
August 2012: first LV2 + GL example plugin
March 2013: two real LV2 openGL plugins:
setBfree – b_synth.lv2
balance.lv2
Spring 2013: widget model from blender & implementation in C
May 2013: started to break out openGL lv2 lib.
Last night: updates to libsuil to directly support openGL cross platform.
Some screenshots first..
..audio examples right after.
Thanks for your attention.
Questions?!
(while I prepare/launch the demo)