[LAD] How to develop guis for LV2?

Gabriel M. Beddingfield gabriel at teuton.org
Sat Nov 7 21:37:08 UTC 2009

On Sat, 7 Nov 2009, David Robillard wrote:

> A better analogy would be well-formed XML or RDF, where things can
> easily be added but it doesn't break anything because the technology has
> been designed specifically to handle this; or my shared library analogy
> from earlier.

Except when you want your XHTML (1.1)+MathML (v3)+SVG (1.1)+CSS (Level
3)+XSLT (1.0)+Javascript content to work as expected in everyone's
browser.  It doesn't break in the sense that babies aren't
dying... but it doesn't *work*, either.  Manwhile the hapless user
with IE6 is thinking, "Why doesn't this stuff work?? It's just a web
page! Microsoft's site looks fine... so it must be /them/."

Hell, even if you stick to HTML 4.0 + CSS 1... you <blink>still</blink> 
have to find workarounds for IE 6.

FWIW, I think XML is awesome... but this part grates on my nerves.

I think LV2 looks awesome, too... but I can't get a grip on this...

THE PROBLEM:  I *want* to write a host that can load anyone's LV2 synth 
and FX... and it just works.  I want to write synths and FX that will work 
in anyone's host.[5]  Where do I start?

Looking over the docs... it looks like a host has to support nearly every 
extension listed on the wiki[1] if I want to accomplish this.  The more I 
dig in... and the more I read David's comments... the more that this 
appears to be the case.  And if something gets added to the list, looks 
like I'll have to update my host to support it.

I know of two synths, zyn[3] and linuxsampler[4].  Zyn requires rtmempool 
and wants dynparam.  LinuxSampler wants hardRtCapable (whatever that is) 
and saverestore.  I can't find mention of EventPort or MidiEvent in the 
RDF files -- but I'm sure those are necessary, too (since they're synths).

Meanwhile, I know of one LV2 host for synths, zynjacku.[2] I have no idea 
which extensions it supports... except that I know it supports whatever 
zyn has (because it appears Nedko did them together).  So, if I write a 
synth that requires URI Map -- I don't know if it will work with zynjacku 
without digging into source code or bugging Nedko about it.

Then, Lars's tutorial appears to be using his own portgroups extension, as 
well as some kind of namespace extension, and I'm not sure if he's using 
Midi Port or Midi Event.  I have no idea if his examples will work in 
zynjacku without compiling them and trying it.

And this is before considering GUI extensions....

Looking at this, people say, "This is good, but it's kind of a mess at the 
moment.  Can we get some sort of 'canonical list of extensions' or 
/something/ stable for devs to work from?"  To which Dave replies, "FUD! 
FUD! FUD!  Such a list accomplishes nothing!"

Am I just missing it, or what?  What's the solution to "The Problem"?  Is 
there core infrastructure (critical extensions) still missing or 
something? I'm _really_ willing to help, but so far every idea that I've 
put forth has been shot down... and Dave *seems* to think that "The 
Problem" isn't a problem.


[1] http://lv2plug.in/docs/index.php?title=Main_Page
[2] http://home.gna.org/zynjacku/
[3] aka "zynadd" http://home.gna.org/zyn/
[4] Version 1.0 at least includes an LV2 version.
[5] Yes, I know there's cases where you have something that is
     so application-specific that you can't always do this.  I
     think it's really cool that LV2 is extensible so that you
     can work around it.

More information about the Linux-audio-dev mailing list