[LV2] RFC: lv2:prototype

David Robillard d at drobilla.net
Fri Dec 27 11:44:44 PST 2013


Hi all,

I've had the problem with Ingen that graph bundles are defined purely in
text and share a binary.  Using a symlink for this causes a bunch of
problems, not the least of which is that bundles can't really be
distributed since the binary path may be different on different systems.

To solve this, I've added/implemented lv2:prototype.  This allows
plugins to inherit properties from another description; in this case,
Ingen installs a bundle which has a binary and prototype description
which points to it, so anyone with Ingen installed can load an Ingen LV2
plugin, even though that plugin's bundle itself contains no binary.

This facility is probably useful for other things like avoiding lots of
repetition, but so far I've kept it simple to solve this particular sort
of problem and apply to plugins only.  Any host using Lilv will
magically benefit from this functionality without changes. 

Definition:

lv2:prototype
	a rdf:Property ,
		owl:ObjectProperty ;
	rdfs:label "prototype" .

Documentation:

The prototype to inherit properties from.

This property can be used to include common properties in several
descriptions. If a plugin has a prototype, then the host must load all
the properties for the prototype as if they were properties of the
plugin. That is, if :plug lv2:prototype :prot, then for each
triple :prot p o, the triple :plug p o should be loaded.

This facility is useful for distributing text-only plugins that rely on
a common binary, by referring to a prototype which is installed by the
corresponding software, along with the plugin binary.

Comments welcome,

-- 
dr



More information about the Devel mailing list