VCA API-change: return created VCAs (handy for Lua scripts)
[ardour.git] / libs / ardour / ardour / lv2_extensions.h
index d49846c8fdfdc70573b37ff6aff8443b8f570972..027eb0391b9a3e18870c88a8b1ceba82c93b7dc2 100644 (file)
@@ -32,6 +32,7 @@
 #define LV2_INLINEDISPLAY_PREFIX LV2_INLINEDISPLAY_URI "#"
 #define LV2_INLINEDISPLAY__interface LV2_INLINEDISPLAY_PREFIX "interface"
 #define LV2_INLINEDISPLAY__queue_draw LV2_INLINEDISPLAY_PREFIX "queue_draw"
+#define LV2_INLINEDISPLAY__in_gui LV2_INLINEDISPLAY_PREFIX "in_gui"
 
 /** Opaque handle for LV2_Inline_Display::queue_draw() */
 typedef void* LV2_Inline_Display_Handle;
@@ -94,6 +95,7 @@ typedef struct {
 #define LV2_AUTOMATE_URI__control LV2_AUTOMATE_URI_PREFIX "automationControl"
 /** lv2:portProperty */
 #define LV2_AUTOMATE_URI__controlled LV2_AUTOMATE_URI_PREFIX "automationControlled"
+#define LV2_AUTOMATE_URI__controller LV2_AUTOMATE_URI_PREFIX "automationController"
 
 /** atom messages */
 #define LV2_AUTOMATE_URI__event LV2_AUTOMATE_URI_PREFIX "event"
@@ -120,6 +122,8 @@ typedef struct {
 #define LV2_PLUGINLICENSE_URI "http://harrisonconsoles.com/lv2/license"
 #define LV2_PLUGINLICENSE_PREFIX LV2_PLUGINLICENSE_URI "#"
 #define LV2_PLUGINLICENSE__interface LV2_PLUGINLICENSE_PREFIX "interface"
+#define LV2_PLUGINLICENSE__interface2 LV2_PLUGINLICENSE_PREFIX "interface2"
+
 
 typedef struct _LV2_License_Interface {
        /* @return -1 if no license is needed; 0 if unlicensed, 1 if licensed */
@@ -132,10 +136,121 @@ typedef struct _LV2_License_Interface {
        const char* (*product_name)(LV2_Handle instance);
        /* @return link to website or webstore */
        const char* (*store_url)(LV2_Handle instance);
+       /* interface2 ext: preferred location to install the license file, the caller needs to free this */
+       char* (*preferred_license_file_path)(LV2_Handle instance);
+       /* interface2 ext: currently used license file (if any, may be NULL), the caller needs to free this */
+       char* (*current_license_file_path)(LV2_Handle instance);
+       /* interface2 ext: free() allocated strings (licensee, license_file_paths) */
+       void (*free)(char*);
 } LV2_License_Interface;
 
 /**
    @}
 */
 
+/**
+   @defgroup plugin provided bypass
+
+        A port with the designation "processing#enable" must
+        control a plugin's internal bypass mode.
+
+        If the port value is larger than zero the plugin processes
+        normally.
+
+        If the port value is zero, the plugin is expected to bypass
+        all signals unmodified.
+
+        The plugin is responsible for providing a click-free transition
+        between the states.
+
+        (values less than zero are reserved for future use:
+        e.g click-free insert/removal of latent plugins.
+        Generally values <= 0 are to be treated as bypassed.)
+
+   lv2:designation <http://ardour.org/lv2/processing#enable> ;
+
+   @{
+*/
+
+#define LV2_PROCESSING_URI "http://ardour.org/lv2/processing"
+#define LV2_PROCESSING_URI_PREFIX LV2_PROCESSING_URI "#"
+#define LV2_PROCESSING_URI__enable LV2_PROCESSING_URI_PREFIX "enable"
+
+/**
+   @}
+*/
+
+/**
+   @defgroup midnam MIDI Naming
+
+   @{
+*/
+
+
+#define LV2_MIDNAM_URI "http://ardour.org/lv2/midnam"
+#define LV2_MIDNAM_PREFIX LV2_MIDNAM_URI "#"
+#define LV2_MIDNAM__interface LV2_MIDNAM_PREFIX "interface"
+#define LV2_MIDNAM__update LV2_MIDNAM_PREFIX "update"
+
+typedef void* LV2_Midnam_Handle;
+
+/** a LV2 Feature provided by the Host to the plugin */
+typedef struct {
+       /** Opaque host data */
+       LV2_Midnam_Handle handle;
+       /** Request from run() that the host should re-read the midnam */
+       void (*update)(LV2_Midnam_Handle handle);
+} LV2_Midnam;
+
+typedef struct {
+       /** Query midnam document. The plugin
+        * is expected to return a null-terminated XML
+        * text which is a valid midnam desciption
+        * (or NULL in case of error).
+        *
+        * The midnam <Model> must be unique and
+        * specific for the given plugin-instance.
+        */
+       char* (*midnam)(LV2_Handle instance);
+
+       /** The unique model id used ith the midnam,
+        * (or NULL).
+        */
+       char* (*model)(LV2_Handle instance);
+
+       /** free allocated strings. The host
+        * calls this for every value returned by
+        * \ref midnam and \ref model.
+        */
+       void (*free)(char*);
+} LV2_Midnam_Interface;
+
+/**
+   @}
+*/
+
+/**
+   @defgroup bankpatch
+
+   @{
+*/
+
+
+#define LV2_BANKPATCH_URI "http://ardour.org/lv2/bankpatch"
+#define LV2_BANKPATCH_PREFIX LV2_BANKPATCH_URI "#"
+#define LV2_BANKPATCH__notify LV2_BANKPATCH_PREFIX "notify"
+
+typedef void* LV2_BankPatch_Handle;
+
+/** a LV2 Feature provided by the Host to the plugin */
+typedef struct {
+       /** Opaque host data */
+       LV2_BankPatch_Handle handle;
+       /** Info from plugin's run(), notify host that bank/program changed */
+       void (*notify)(LV2_BankPatch_Handle handle, uint8_t channel, uint32_t bank, uint8_t pgm);
+} LV2_BankPatch;
+
+/**
+   @}
+*/
 #endif