Defines semantic groupings of LV2 ports
This document describes "LV2 Port Groups" (http://lv2plug.in/ns/dev/port-groups), an extension to LV2.
This is an XHTML+RDFa page automatically generated from lv2_port_groups.ttl by lv2specgen. The data related aspects of this extension are described here, the code related aspects are documented in the corresponding header, lv2_port_groups.h. You may use, reproduce, redistribute, and create derivative works of this document, but the extension URI must be changed if any changes are made that contradict this specification, or would break an implementation conforming to this specification.
Comments are welcome, please direct discussion to devel@lists.lv2plug.in.
A grouping of ports that can be logically considered a "stream", e.g. two audio ports in a group forming a stereo stream. Both inputs and outputs can form a group, which allows describing to the host which outputs correspond to which inputs. In this case, outputs with a given role correspond to the inputs in the same group with that role (though the output and input roles of a group do not necessarily match). The pg:source predicate can also be used to describe this correspondence between separate ports/groups.
A pg:Group MUST have at least one string lv2:symbol. This symbol must be unique according to the same rules as the lv2:symbol for an lv2:Port, where group symbols and port symbols reside in the same namespace. In other words, a group on a plugin MUST NOT have the same symbol as another group or a port on that plugin. Rationale: Hosts or bindings may find it useful to construct an identifier to refer to groups for the same reasons this is useful for ports.
The role of a port with respect to its plugin or group. If the port is a member of a group (has an :inGroup property) the role is relevant with respect to that group. Otherwise the role is relevant with respect to the plugin.
Indicates this group is an encoding of some other group type, e.g. 4.0 encoded in 2.0 would be a StereoGroup with pg:encodedType FourPointZeroGroup.
Indicates that this port has a particular role with respect to its enclosing plugin or group (whichever is smaller). A port may have several roles if it makes sense to do so (though some Role or Group definition may forbid this).
Indicates that this port is a part of a group of ports on the plugin. Ports that have a meaningful "role" that may be useful to hosts SHOULD also have a :role property, otherwise ports in the group have no meaningful order.
Indicates that this group should be considered the "main" inputs/outputs of the plugin, e.g. it probably makes sense to just connect main groups and set some controls. A plugin MUST NOT have more than one :mainGroup property. High-level hosts that simply want to insert an plugin in a given stream should use this property to determine where the plugin 'fits'.
Indicates that a group MAY have a port with a particular role.
Indicates that a group always has a port with a particular role.
Indicates that this port or group should be considered a "side chain" of some other port or group. The precise definition of "side chain" depends on the plugin, but in general this group should be considered a modifier to some other group, rather than an independent input itself.
Indicates that this port or group should be considered the "result" of some other port or group. This property only makes sense on groups with outputs when the source is a group with inputs. This can be used to convey a relationship between corresponding input and output groups with different types, e.g. a mono->stereo plugin.