This vocabulary defines messages which can be used to access and manipulate properties. It is designed to provide a dynamic control interface for LV2 plugins, but is useful in many contexts.
The main feature of this design is that the messages themselves are described in the same format as the data they work with. In particular, messages can be serialised as a binary Object or in Turtle (or any other RDF serialisation).
The idea behind using a property-based interface for control is to prevent an an explosion of message types. Instead of a custom message for each action, control is achieved via manipulating properties (which are likely already defined for other reasons). Note, however, that this is purely conceptual; there is no requirement that the receiver actually implement a store of resources with properties.
For example, consider an object that can blink. Rather than define a
specific interface to control this (e.g. obj.start_blinking();
obj.stop_blinking()
), set a blinking
property to true or false
(e.g. obj.set(blinking, true)
) to achieve the desired behaviour.
One benefit of this approach is that a persistent state model is available
for free
: simply serialise the blinking
property.
This specification is strictly metadata and does not define any binary mechanism, though it can be completely expressed by standard types in the LV2 Atom extension. Thus, hosts can be expected to be capable of transmitting it between plugins, or between a plugin and its UI, making it a good choice for advanced plugin control.