[LAD] How to develop guis for LV2?

Patrick Shirkey pshirkey at boosthardware.com
Sun Nov 8 02:55:05 UTC 2009

On 11/08/2009 08:37 AM, Gabriel M. Beddingfield wrote:
> 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.
> <rant>
> 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.
> </rant>
> 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?

Would a set of reference template code written for the various languages 
that we have at our disposal be of any use here?

I again ask for submissions. Even if we just have one template that we 
can agree on it won't be that much effort to port it across to the other 
languages that we would like to have supporting LV2. that will make 
things that much clearer for developers across the board.

The standard in the closed source world is to provide a package with the 
example code in place add some descriptive comments and a web accessible 
howto and we are good to go.

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

It's clear that we need to better define the plugin publishing and 
dependency system for LV2?

We need a more transparent way of referencing an extension/plugin by to 
it's dependencies.

> 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.
> Thanks,
> Gabriel
> [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.
> _______________________________________________
> Linux-audio-dev mailing list
> Linux-audio-dev at lists.linuxaudio.org
> http://lists.linuxaudio.org/mailman/listinfo/linux-audio-dev

More information about the Linux-audio-dev mailing list