[LV2] [PATCH - Signal Data change 1/1] lv2core: Add feature to indicate that host signals data change

twischer at de.adit-jv.com twischer at de.adit-jv.com
Wed Apr 11 23:42:05 PDT 2018

From: Timo Wischer <twischer at de.adit-jv.com>

This feature can be provided by the Lv2 host. If it is provided the Lv2
host guarantees that connect_port() will be called for each input control
port which has changed since the last run() call.

If this feature is not supported the Lv2 plugin has to compare the port
data by its own to detect a change.

Therefore an Lv2 plugin can easily be adapted to also be used with a
simple Lv2 host which does not support this feature.

When using the patch extension the Lv2 plugin can only be used with Lv2
hosts supporting the patch extension. A bigger effort is required for the
Lv2 plugin to support a fall back implementation which does not require
the patch extension.

Signed-off-by: Timo Wischer <twischer at de.adit-jv.com>

diff --git a/lv2/lv2plug.in/ns/lv2core/lv2.h b/lv2/lv2plug.in/ns/lv2core/lv2.h
index eaca514..96f294e 100644
--- a/lv2/lv2plug.in/ns/lv2core/lv2.h
+++ b/lv2/lv2plug.in/ns/lv2core/lv2.h
@@ -116,6 +116,7 @@
 #define LV2_CORE__requiredFeature    LV2_CORE_PREFIX "requiredFeature"     ///< http://lv2plug.in/ns/lv2core#requiredFeature
 #define LV2_CORE__sampleRate         LV2_CORE_PREFIX "sampleRate"          ///< http://lv2plug.in/ns/lv2core#sampleRate
 #define LV2_CORE__scalePoint         LV2_CORE_PREFIX "scalePoint"          ///< http://lv2plug.in/ns/lv2core#scalePoint
+#define LV2_CORE__signalsDataChange  LV2_CORE_PREFIX "signalsDataChange"   ///< http://lv2plug.in/ns/lv2core#signalsDataChange
 #define LV2_CORE__symbol             LV2_CORE_PREFIX "symbol"              ///< http://lv2plug.in/ns/lv2core#symbol
 #define LV2_CORE__toggled            LV2_CORE_PREFIX "toggled"             ///< http://lv2plug.in/ns/lv2core#toggled
diff --git a/lv2/lv2plug.in/ns/lv2core/lv2core.ttl b/lv2/lv2plug.in/ns/lv2core/lv2core.ttl
index dd3e6bd..8d25aad 100644
--- a/lv2/lv2plug.in/ns/lv2core/lv2core.ttl
+++ b/lv2/lv2plug.in/ns/lv2core/lv2core.ttl
@@ -746,6 +746,18 @@ plugin MUST satisfy all of the following:</p>
 <p>Note these rules apply to the connect_port() function as well as run().</p>
 """ .
+	a lv2:Feature ;
+	rdfs:label "signals data change" ;
+	lv2:documentation """
+This feature indicates that the Lv2 host will call connect_port() for the 
+corresponding control input port whenever its data has changed.
+Therefore the Lv2 plugin does not need to compare the current control port data
+with the old one to detect whether the data has changed.
+""" .
+be called when ever a 
 	a rdfs:Class ,
 		owl:Class ;

More information about the Devel mailing list