@@ -30,8 +30,6 @@ | |||||
#define LV2_ATOM__Atom LV2_ATOM_PREFIX "Atom" | #define LV2_ATOM__Atom LV2_ATOM_PREFIX "Atom" | ||||
#define LV2_ATOM__AtomPort LV2_ATOM_PREFIX "AtomPort" | #define LV2_ATOM__AtomPort LV2_ATOM_PREFIX "AtomPort" | ||||
#define LV2_ATOM__AudioFrames LV2_ATOM_PREFIX "AudioFrames" | |||||
#define LV2_ATOM__Beats LV2_ATOM_PREFIX "Beats" | |||||
#define LV2_ATOM__Blank LV2_ATOM_PREFIX "Blank" | #define LV2_ATOM__Blank LV2_ATOM_PREFIX "Blank" | ||||
#define LV2_ATOM__Bool LV2_ATOM_PREFIX "Bool" | #define LV2_ATOM__Bool LV2_ATOM_PREFIX "Bool" | ||||
#define LV2_ATOM__Chunk LV2_ATOM_PREFIX "Chunk" | #define LV2_ATOM__Chunk LV2_ATOM_PREFIX "Chunk" | ||||
@@ -39,8 +37,8 @@ | |||||
#define LV2_ATOM__Event LV2_ATOM_PREFIX "Event" | #define LV2_ATOM__Event LV2_ATOM_PREFIX "Event" | ||||
#define LV2_ATOM__Float LV2_ATOM_PREFIX "Float" | #define LV2_ATOM__Float LV2_ATOM_PREFIX "Float" | ||||
#define LV2_ATOM__Int LV2_ATOM_PREFIX "Int" | #define LV2_ATOM__Int LV2_ATOM_PREFIX "Int" | ||||
#define LV2_ATOM__Long LV2_ATOM_PREFIX "Long" | |||||
#define LV2_ATOM__Literal LV2_ATOM_PREFIX "Literal" | #define LV2_ATOM__Literal LV2_ATOM_PREFIX "Literal" | ||||
#define LV2_ATOM__Long LV2_ATOM_PREFIX "Long" | |||||
#define LV2_ATOM__Number LV2_ATOM_PREFIX "Number" | #define LV2_ATOM__Number LV2_ATOM_PREFIX "Number" | ||||
#define LV2_ATOM__Object LV2_ATOM_PREFIX "Object" | #define LV2_ATOM__Object LV2_ATOM_PREFIX "Object" | ||||
#define LV2_ATOM__Path LV2_ATOM_PREFIX "Path" | #define LV2_ATOM__Path LV2_ATOM_PREFIX "Path" | ||||
@@ -49,11 +47,11 @@ | |||||
#define LV2_ATOM__Sequence LV2_ATOM_PREFIX "Sequence" | #define LV2_ATOM__Sequence LV2_ATOM_PREFIX "Sequence" | ||||
#define LV2_ATOM__Sound LV2_ATOM_PREFIX "Sound" | #define LV2_ATOM__Sound LV2_ATOM_PREFIX "Sound" | ||||
#define LV2_ATOM__String LV2_ATOM_PREFIX "String" | #define LV2_ATOM__String LV2_ATOM_PREFIX "String" | ||||
#define LV2_ATOM__TimeUnit LV2_ATOM_PREFIX "TimeUnit" | |||||
#define LV2_ATOM__Tuple LV2_ATOM_PREFIX "Tuple" | #define LV2_ATOM__Tuple LV2_ATOM_PREFIX "Tuple" | ||||
#define LV2_ATOM__URI LV2_ATOM_PREFIX "URI" | #define LV2_ATOM__URI LV2_ATOM_PREFIX "URI" | ||||
#define LV2_ATOM__URID LV2_ATOM_PREFIX "URID" | #define LV2_ATOM__URID LV2_ATOM_PREFIX "URID" | ||||
#define LV2_ATOM__Vector LV2_ATOM_PREFIX "Vector" | #define LV2_ATOM__Vector LV2_ATOM_PREFIX "Vector" | ||||
#define LV2_ATOM__atomTransfer LV2_ATOM_PREFIX "atomTransfer" | |||||
#define LV2_ATOM__beatTime LV2_ATOM_PREFIX "beatTime" | #define LV2_ATOM__beatTime LV2_ATOM_PREFIX "beatTime" | ||||
#define LV2_ATOM__bufferType LV2_ATOM_PREFIX "bufferType" | #define LV2_ATOM__bufferType LV2_ATOM_PREFIX "bufferType" | ||||
#define LV2_ATOM__childType LV2_ATOM_PREFIX "childType" | #define LV2_ATOM__childType LV2_ATOM_PREFIX "childType" | ||||
@@ -207,8 +205,7 @@ typedef struct { | |||||
The unit field is either a URID that described an appropriate time stamp | The unit field is either a URID that described an appropriate time stamp | ||||
type, or may be 0 where a default stamp type is known. For | type, or may be 0 where a default stamp type is known. For | ||||
LV2_Descriptor::run(), the default stamp type is atom:AudioFrames, i.e. | |||||
LV2_Atom_Audio_Time. | |||||
LV2_Descriptor::run(), the default stamp type is audio frames. | |||||
The contents of a sequence is a series of LV2_Atom_Event, each aligned | The contents of a sequence is a series of LV2_Atom_Event, each aligned | ||||
to 64-bits, e.g.: | to 64-bits, e.g.: | ||||
@@ -31,7 +31,7 @@ | |||||
/** | /** | ||||
The data field of the LV2_Feature for this extension. | The data field of the LV2_Feature for this extension. | ||||
To support this feature the host must pass an LV2_Feature struct to the | To support this feature the host must pass an LV2_Feature struct to the | ||||
instantiate method with URI "http://lv2plug.in/ns/ext/data-access" | instantiate method with URI "http://lv2plug.in/ns/ext/data-access" | ||||
and data pointed to an instance of this struct. | and data pointed to an instance of this struct. | ||||
@@ -40,17 +40,16 @@ typedef struct { | |||||
/** | /** | ||||
A pointer to a method the UI can call to get data (of a type specified | A pointer to a method the UI can call to get data (of a type specified | ||||
by some other extension) from the plugin. | by some other extension) from the plugin. | ||||
This call never is never guaranteed to return anything, UIs should | This call never is never guaranteed to return anything, UIs should | ||||
degrade gracefully if direct access to the plugin data is not possible | degrade gracefully if direct access to the plugin data is not possible | ||||
(in which case this function will return NULL). | (in which case this function will return NULL). | ||||
This is for access to large data that can only possibly work if the UI | This is for access to large data that can only possibly work if the UI | ||||
and plugin are running in the same process. For all other things, use | and plugin are running in the same process. For all other things, use | ||||
the normal LV2 UI communication system. | the normal LV2 UI communication system. | ||||
*/ | */ | ||||
const void* (*data_access)(const char* uri); | const void* (*data_access)(const char* uri); | ||||
} LV2_Extension_Data_Feature; | } LV2_Extension_Data_Feature; | ||||
#endif /* LV2_DATA_ACCESS_H */ | |||||
#endif /* LV2_DATA_ACCESS_H */ |
@@ -191,10 +191,10 @@ lv2_event_write(LV2_Event_Iterator* iter, | |||||
is not enough room in the buffer. */ | is not enough room in the buffer. */ | ||||
static inline uint8_t* | static inline uint8_t* | ||||
lv2_event_reserve(LV2_Event_Iterator* iter, | lv2_event_reserve(LV2_Event_Iterator* iter, | ||||
uint32_t frames, | |||||
uint32_t subframes, | |||||
uint16_t type, | |||||
uint16_t size) | |||||
uint32_t frames, | |||||
uint32_t subframes, | |||||
uint16_t type, | |||||
uint16_t size) | |||||
{ | { | ||||
if (iter->buf->capacity - iter->buf->size < sizeof(LV2_Event) + size) | if (iter->buf->capacity - iter->buf->size < sizeof(LV2_Event) + size) | ||||
return NULL; | return NULL; | ||||
@@ -18,12 +18,12 @@ | |||||
/** | /** | ||||
@file event.h | @file event.h | ||||
C API for the LV2 Event extension <http://lv2plug.in/ns/ext/event>. | C API for the LV2 Event extension <http://lv2plug.in/ns/ext/event>. | ||||
This extension is a generic transport mechanism for time stamped events | This extension is a generic transport mechanism for time stamped events | ||||
of any type (e.g. MIDI, OSC, ramps, etc). Each port can transport mixed | of any type (e.g. MIDI, OSC, ramps, etc). Each port can transport mixed | ||||
events of any type; the type of events and timestamps are defined by a URI | events of any type; the type of events and timestamps are defined by a URI | ||||
which is mapped to an integer by the host for performance reasons. | which is mapped to an integer by the host for performance reasons. | ||||
This extension requires the host to support the LV2 URI Map extension. | This extension requires the host to support the LV2 URI Map extension. | ||||
Any host which supports this extension MUST guarantee that any call to | Any host which supports this extension MUST guarantee that any call to | ||||
the LV2 URI Map uri_to_id function with the URI of this extension as the | the LV2 URI Map uri_to_id function with the URI of this extension as the | ||||
@@ -33,7 +33,20 @@ | |||||
#ifndef LV2_EVENT_H | #ifndef LV2_EVENT_H | ||||
#define LV2_EVENT_H | #define LV2_EVENT_H | ||||
#define LV2_EVENT_URI "http://lv2plug.in/ns/ext/event" | |||||
#define LV2_EVENT_URI "http://lv2plug.in/ns/ext/event" | |||||
#define LV2_EVENT_PREFIX LV2_EVENT_URI "#" | |||||
#define LV2_EVENT__Event LV2_EVENT_PREFIX "Event" | |||||
#define LV2_EVENT__EventPort LV2_EVENT_PREFIX "EventPort" | |||||
#define LV2_EVENT__FrameStamp LV2_EVENT_PREFIX "FrameStamp" | |||||
#define LV2_EVENT__TimeStamp LV2_EVENT_PREFIX "TimeStamp" | |||||
#define LV2_EVENT__generatesTimeStamp LV2_EVENT_PREFIX "generatesTimeStamp" | |||||
#define LV2_EVENT__generic LV2_EVENT_PREFIX "generic" | |||||
#define LV2_EVENT__inheritsEvent LV2_EVENT_PREFIX "inheritsEvent" | |||||
#define LV2_EVENT__inheritsTimeStamp LV2_EVENT_PREFIX "inheritsTimeStamp" | |||||
#define LV2_EVENT__supportsEvent LV2_EVENT_PREFIX "supportsEvent" | |||||
#define LV2_EVENT__supportsTimeStamp LV2_EVENT_PREFIX "supportsTimeStamp" | |||||
#define LV2_EVENT_AUDIO_STAMP 0 | #define LV2_EVENT_AUDIO_STAMP 0 | ||||
#include <stdint.h> | #include <stdint.h> | ||||
@@ -47,19 +60,18 @@ static const uint32_t LV2_EVENT_PPQN = 3136573440U; | |||||
/** | /** | ||||
An LV2 event (header only). | An LV2 event (header only). | ||||
LV2 events are generic time-stamped containers for any type of event. | LV2 events are generic time-stamped containers for any type of event. | ||||
The type field defines the format of a given event's contents. | The type field defines the format of a given event's contents. | ||||
This struct defines the header of an LV2 event. An LV2 event is a single | This struct defines the header of an LV2 event. An LV2 event is a single | ||||
chunk of POD (plain old data), usually contained in a flat buffer (see | chunk of POD (plain old data), usually contained in a flat buffer (see | ||||
LV2_EventBuffer below). Unless a required feature says otherwise, hosts may | LV2_EventBuffer below). Unless a required feature says otherwise, hosts may | ||||
assume a deep copy of an LV2 event can be created safely using a simple: | assume a deep copy of an LV2 event can be created safely using a simple: | ||||
memcpy(ev_copy, ev, sizeof(LV2_Event) + ev->size); (or equivalent) | memcpy(ev_copy, ev, sizeof(LV2_Event) + ev->size); (or equivalent) | ||||
*/ | */ | ||||
typedef struct { | typedef struct { | ||||
/** | /** | ||||
The frames portion of timestamp. The units used here can optionally be | The frames portion of timestamp. The units used here can optionally be | ||||
set for a port (with the lv2ev:timeUnits property), otherwise this is | set for a port (with the lv2ev:timeUnits property), otherwise this is | ||||
@@ -100,28 +112,26 @@ typedef struct { | |||||
uint16_t size; | uint16_t size; | ||||
/* size bytes of data follow here */ | /* size bytes of data follow here */ | ||||
} LV2_Event; | } LV2_Event; | ||||
/** | /** | ||||
A buffer of LV2 events (header only). | A buffer of LV2 events (header only). | ||||
Like events (which this contains) an event buffer is a single chunk of POD: | Like events (which this contains) an event buffer is a single chunk of POD: | ||||
the entire buffer (including contents) can be copied with a single memcpy. | the entire buffer (including contents) can be copied with a single memcpy. | ||||
The first contained event begins sizeof(LV2_EventBuffer) bytes after the | The first contained event begins sizeof(LV2_EventBuffer) bytes after the | ||||
start of this struct. | start of this struct. | ||||
After this header, the buffer contains an event header (defined by struct | After this header, the buffer contains an event header (defined by struct | ||||
LV2_Event), followed by that event's contents (padded to 64 bits), followed | LV2_Event), followed by that event's contents (padded to 64 bits), followed | ||||
by another header, etc: | by another header, etc: | ||||
| | | | | | | | | | | | | | | | ||||
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | ||||
|FRAMES |SUBFRMS|TYP|LEN|DATA..DATA..PAD|FRAMES | ... | |FRAMES |SUBFRMS|TYP|LEN|DATA..DATA..PAD|FRAMES | ... | ||||
*/ | */ | ||||
typedef struct { | typedef struct { | ||||
/** | /** | ||||
The contents of the event buffer. This may or may not reside in the | The contents of the event buffer. This may or may not reside in the | ||||
same block of memory as this header, plugins must not assume either. | same block of memory as this header, plugins must not assume either. | ||||
@@ -132,7 +142,7 @@ typedef struct { | |||||
/** | /** | ||||
The size of this event header in bytes (including everything). | The size of this event header in bytes (including everything). | ||||
This is to allow for extending this header in the future without | This is to allow for extending this header in the future without | ||||
breaking binary compatibility. Whenever this header is copied, | breaking binary compatibility. Whenever this header is copied, | ||||
it MUST be done using this field (and NOT the sizeof this struct). | it MUST be done using this field (and NOT the sizeof this struct). | ||||
@@ -153,7 +163,7 @@ typedef struct { | |||||
connect_port is called on the input port, at which time the host MUST | connect_port is called on the input port, at which time the host MUST | ||||
have set the stamp_type field to the value that will be used for all | have set the stamp_type field to the value that will be used for all | ||||
subsequent run calls. | subsequent run calls. | ||||
OUTPUTS: The plugin may set this to any value that has been returned | OUTPUTS: The plugin may set this to any value that has been returned | ||||
from uri_to_id with the URI of this extension for a 'map' argument. | from uri_to_id with the URI of this extension for a 'map' argument. | ||||
When connected to a buffer with connect_port, output ports MUST set this | When connected to a buffer with connect_port, output ports MUST set this | ||||
@@ -198,7 +208,6 @@ typedef struct { | |||||
Any initial value should be ignored by the plugin. | Any initial value should be ignored by the plugin. | ||||
*/ | */ | ||||
uint32_t size; | uint32_t size; | ||||
} LV2_Event_Buffer; | } LV2_Event_Buffer; | ||||
@@ -210,17 +219,16 @@ typedef void* LV2_Event_Callback_Data; | |||||
/** | /** | ||||
Non-POD events feature. | Non-POD events feature. | ||||
To support this feature the host must pass an LV2_Feature struct to the | To support this feature the host must pass an LV2_Feature struct to the | ||||
plugin's instantiate method with URI "http://lv2plug.in/ns/ext/event" | plugin's instantiate method with URI "http://lv2plug.in/ns/ext/event" | ||||
and data pointed to an instance of this struct. Note this feature | and data pointed to an instance of this struct. Note this feature | ||||
is not mandatory to support the event extension. | is not mandatory to support the event extension. | ||||
*/ | */ | ||||
typedef struct { | typedef struct { | ||||
/** | /** | ||||
Opaque pointer to host data. | Opaque pointer to host data. | ||||
The plugin MUST pass this to any call to functions in this struct. | The plugin MUST pass this to any call to functions in this struct. | ||||
Otherwise, it must not be interpreted in any way. | Otherwise, it must not be interpreted in any way. | ||||
*/ | */ | ||||
@@ -228,7 +236,7 @@ typedef struct { | |||||
/** | /** | ||||
Take a reference to a non-POD event. | Take a reference to a non-POD event. | ||||
If a plugin receives an event with type 0, it means the event is a | If a plugin receives an event with type 0, it means the event is a | ||||
pointer to some object in memory and not a flat sequence of bytes | pointer to some object in memory and not a flat sequence of bytes | ||||
in the buffer. When receiving a non-POD event, the plugin already | in the buffer. When receiving a non-POD event, the plugin already | ||||
@@ -236,16 +244,16 @@ typedef struct { | |||||
passed to an output, lv2_event_ref MUST be called on that event. | passed to an output, lv2_event_ref MUST be called on that event. | ||||
If the event is only stored OR passed through, this is not necessary | If the event is only stored OR passed through, this is not necessary | ||||
(as the plugin already has 1 implicit reference). | (as the plugin already has 1 implicit reference). | ||||
@param event An event received at an input that will not be copied to | @param event An event received at an input that will not be copied to | ||||
an output or stored in any way. | an output or stored in any way. | ||||
@param context The calling context. Like event types, this is a mapped | @param context The calling context. Like event types, this is a mapped | ||||
URI, see lv2_context.h. Simple plugin with just a run() method should | URI, see lv2_context.h. Simple plugin with just a run() method should | ||||
pass 0 here (the ID of the 'standard' LV2 run context). The host | pass 0 here (the ID of the 'standard' LV2 run context). The host | ||||
guarantees that this function is realtime safe iff @a context is | guarantees that this function is realtime safe iff @a context is | ||||
realtime safe. | realtime safe. | ||||
PLUGINS THAT VIOLATE THESE RULES MAY CAUSE CRASHES AND MEMORY LEAKS. | PLUGINS THAT VIOLATE THESE RULES MAY CAUSE CRASHES AND MEMORY LEAKS. | ||||
*/ | */ | ||||
uint32_t (*lv2_event_ref)(LV2_Event_Callback_Data callback_data, | uint32_t (*lv2_event_ref)(LV2_Event_Callback_Data callback_data, | ||||
@@ -253,27 +261,26 @@ typedef struct { | |||||
/** | /** | ||||
Drop a reference to a non-POD event. | Drop a reference to a non-POD event. | ||||
If a plugin receives an event with type 0, it means the event is a | If a plugin receives an event with type 0, it means the event is a | ||||
pointer to some object in memory and not a flat sequence of bytes | pointer to some object in memory and not a flat sequence of bytes | ||||
in the buffer. If the plugin does not pass the event through to | in the buffer. If the plugin does not pass the event through to | ||||
an output or store it internally somehow, it MUST call this function | an output or store it internally somehow, it MUST call this function | ||||
on the event (more information on using non-POD events below). | on the event (more information on using non-POD events below). | ||||
@param event An event received at an input that will not be copied to an | @param event An event received at an input that will not be copied to an | ||||
output or stored in any way. | output or stored in any way. | ||||
@param context The calling context. Like event types, this is a mapped | @param context The calling context. Like event types, this is a mapped | ||||
URI, see lv2_context.h. Simple plugin with just a run() method should | URI, see lv2_context.h. Simple plugin with just a run() method should | ||||
pass 0 here (the ID of the 'standard' LV2 run context). The host | pass 0 here (the ID of the 'standard' LV2 run context). The host | ||||
guarantees that this function is realtime safe iff @a context is | guarantees that this function is realtime safe iff @a context is | ||||
realtime safe. | realtime safe. | ||||
PLUGINS THAT VIOLATE THESE RULES MAY CAUSE CRASHES AND MEMORY LEAKS. | PLUGINS THAT VIOLATE THESE RULES MAY CAUSE CRASHES AND MEMORY LEAKS. | ||||
*/ | */ | ||||
uint32_t (*lv2_event_unref)(LV2_Event_Callback_Data callback_data, | uint32_t (*lv2_event_unref)(LV2_Event_Callback_Data callback_data, | ||||
LV2_Event* event); | LV2_Event* event); | ||||
} LV2_Event_Feature; | } LV2_Event_Feature; | ||||
@@ -1,6 +1,6 @@ | |||||
/* | /* | ||||
LV2 Instance Access Extension | LV2 Instance Access Extension | ||||
Copyright 2008-2011 David Robillard <http://drobilla.net> | |||||
Copyright 2008-2012 David Robillard <http://drobilla.net> | |||||
Permission to use, copy, modify, and/or distribute this software for any | Permission to use, copy, modify, and/or distribute this software for any | ||||
purpose with or without fee is hereby granted, provided that the above | purpose with or without fee is hereby granted, provided that the above | ||||
@@ -20,19 +20,18 @@ | |||||
#define LV2_INSTANCE_ACCESS_URI "http://lv2plug.in/ns/ext/instance-access" | #define LV2_INSTANCE_ACCESS_URI "http://lv2plug.in/ns/ext/instance-access" | ||||
/** | |||||
@file instance-access.h | |||||
C header for the LV2 Instance Access extension | |||||
<http://lv2plug.in/ns/ext/instance-access>. | |||||
This extension defines a method for (e.g.) plugin UIs to get a direct | |||||
handle to an LV2 plugin instance (LV2_Handle), if possible. | |||||
To support this feature the host must pass an LV2_Feature struct to the | |||||
UI instantiate method with URI "http://lv2plug.in/ns/ext/instance-access" | |||||
and data pointed directly to the LV2_Handle of the plugin instance. | |||||
*/ | |||||
/** @file | |||||
* C header for the LV2 Instance Access extension | |||||
* <http://lv2plug.in/ns/ext/instance-access>. | |||||
* | |||||
* This extension defines a method for (e.g.) plugin UIs to get a direct | |||||
* handle to an LV2 plugin instance (LV2_Handle), if possible. | |||||
* | |||||
* To support this feature the host must pass an LV2_Feature struct to the | |||||
* UI instantiate method with URI "http://lv2plug.in/ns/ext/instance-access" | |||||
* and data pointed directly to the LV2_Handle of the plugin instance. | |||||
*/ | |||||
#endif /* LV2_INSTANCE_ACCESS_H */ | |||||
#endif /* LV2_INSTANCE_ACCESS_H */ | |||||
@@ -4,7 +4,7 @@ | |||||
Based on LADSPA, Copyright 2000-2002 Richard W.E. Furse, | Based on LADSPA, Copyright 2000-2002 Richard W.E. Furse, | ||||
Paul Barton-Davis, Stefan Westerfeld. | Paul Barton-Davis, Stefan Westerfeld. | ||||
Permission to use, copy, modify, and/or distribute this software for any | Permission to use, copy, modify, and/or distribute this software for any | ||||
purpose with or without fee is hereby granted, provided that the above | purpose with or without fee is hereby granted, provided that the above | ||||
copyright notice and this permission notice appear in all copies. | copyright notice and this permission notice appear in all copies. | ||||
@@ -37,6 +37,7 @@ | |||||
#define LV2_CORE__AnalyserPlugin LV2_CORE_PREFIX "AnalyserPlugin" | #define LV2_CORE__AnalyserPlugin LV2_CORE_PREFIX "AnalyserPlugin" | ||||
#define LV2_CORE__AudioPort LV2_CORE_PREFIX "AudioPort" | #define LV2_CORE__AudioPort LV2_CORE_PREFIX "AudioPort" | ||||
#define LV2_CORE__BandpassPlugin LV2_CORE_PREFIX "BandpassPlugin" | #define LV2_CORE__BandpassPlugin LV2_CORE_PREFIX "BandpassPlugin" | ||||
#define LV2_CORE__CVPort LV2_CORE_PREFIX "CVPort" | |||||
#define LV2_CORE__ChorusPlugin LV2_CORE_PREFIX "ChorusPlugin" | #define LV2_CORE__ChorusPlugin LV2_CORE_PREFIX "ChorusPlugin" | ||||
#define LV2_CORE__CombPlugin LV2_CORE_PREFIX "CombPlugin" | #define LV2_CORE__CombPlugin LV2_CORE_PREFIX "CombPlugin" | ||||
#define LV2_CORE__CompressorPlugin LV2_CORE_PREFIX "CompressorPlugin" | #define LV2_CORE__CompressorPlugin LV2_CORE_PREFIX "CompressorPlugin" | ||||
@@ -92,7 +93,6 @@ | |||||
#define LV2_CORE__extensionData LV2_CORE_PREFIX "extensionData" | #define LV2_CORE__extensionData LV2_CORE_PREFIX "extensionData" | ||||
#define LV2_CORE__freeWheeling LV2_CORE_PREFIX "freeWheeling" | #define LV2_CORE__freeWheeling LV2_CORE_PREFIX "freeWheeling" | ||||
#define LV2_CORE__hardRTCapable LV2_CORE_PREFIX "hardRTCapable" | #define LV2_CORE__hardRTCapable LV2_CORE_PREFIX "hardRTCapable" | ||||
#define LV2_CORE__hasParameter LV2_CORE_PREFIX "hasParameter" | |||||
#define LV2_CORE__inPlaceBroken LV2_CORE_PREFIX "inPlaceBroken" | #define LV2_CORE__inPlaceBroken LV2_CORE_PREFIX "inPlaceBroken" | ||||
#define LV2_CORE__index LV2_CORE_PREFIX "index" | #define LV2_CORE__index LV2_CORE_PREFIX "index" | ||||
#define LV2_CORE__integer LV2_CORE_PREFIX "integer" | #define LV2_CORE__integer LV2_CORE_PREFIX "integer" | ||||
@@ -119,7 +119,7 @@ extern "C" { | |||||
/** | /** | ||||
Plugin Instance Handle. | Plugin Instance Handle. | ||||
This is a handle for one particular instance of a plugin. It is valid to | This is a handle for one particular instance of a plugin. It is valid to | ||||
compare to NULL (or 0 for C++) but otherwise the host MUST NOT attempt to | compare to NULL (or 0 for C++) but otherwise the host MUST NOT attempt to | ||||
interpret it. | interpret it. | ||||
@@ -128,7 +128,7 @@ typedef void * LV2_Handle; | |||||
/** | /** | ||||
Feature. | Feature. | ||||
Features allow hosts to make additional functionality available to plugins | Features allow hosts to make additional functionality available to plugins | ||||
without requiring modification to the LV2 API. Extensions may define new | without requiring modification to the LV2 API. Extensions may define new | ||||
features and specify the @ref URI and @ref data to be used if necessary. | features and specify the @ref URI and @ref data to be used if necessary. | ||||
@@ -153,7 +153,7 @@ typedef struct _LV2_Feature { | |||||
/** | /** | ||||
Plugin Descriptor. | Plugin Descriptor. | ||||
This structure provides the core functions necessary to instantiate and use | This structure provides the core functions necessary to instantiate and use | ||||
a plugin. | a plugin. | ||||
*/ | */ | ||||
@@ -182,7 +182,7 @@ typedef struct _LV2_Descriptor { | |||||
binary. It MUST include the trailing directory separator (e.g. '/') so | binary. It MUST include the trailing directory separator (e.g. '/') so | ||||
that simply appending a filename will yield the path to that file in the | that simply appending a filename will yield the path to that file in the | ||||
bundle. | bundle. | ||||
@param features A NULL terminated array of LV2_Feature structs which | @param features A NULL terminated array of LV2_Feature structs which | ||||
represent the features the host supports. Plugins may refuse to | represent the features the host supports. Plugins may refuse to | ||||
instantiate if required features are not found here. However, hosts MUST | instantiate if required features are not found here. However, hosts MUST | ||||
@@ -193,7 +193,7 @@ typedef struct _LV2_Descriptor { | |||||
NULL. | NULL. | ||||
@return A handle for the new plugin instance, or NULL if instantiation | @return A handle for the new plugin instance, or NULL if instantiation | ||||
has failed. | |||||
has failed. | |||||
*/ | */ | ||||
LV2_Handle (*instantiate)(const struct _LV2_Descriptor * descriptor, | LV2_Handle (*instantiate)(const struct _LV2_Descriptor * descriptor, | ||||
double sample_rate, | double sample_rate, | ||||
@@ -206,7 +206,7 @@ typedef struct _LV2_Descriptor { | |||||
Plugin writers should be aware that the host may elect to use the same | Plugin writers should be aware that the host may elect to use the same | ||||
buffer for more than one port and even use the same buffer for both | buffer for more than one port and even use the same buffer for both | ||||
input and output (see lv2:inPlaceBroken in lv2.ttl). | input and output (see lv2:inPlaceBroken in lv2.ttl). | ||||
If the plugin has the feature lv2:hardRTCapable then there are various | If the plugin has the feature lv2:hardRTCapable then there are various | ||||
things that the plugin MUST NOT do within the connect_port() function; | things that the plugin MUST NOT do within the connect_port() function; | ||||
see lv2core.ttl for details. | see lv2core.ttl for details. | ||||
@@ -240,14 +240,14 @@ typedef struct _LV2_Descriptor { | |||||
/** | /** | ||||
Initialise a plugin instance and activate it for use. | Initialise a plugin instance and activate it for use. | ||||
This is separated from instantiate() to aid real-time support and so | This is separated from instantiate() to aid real-time support and so | ||||
that hosts can reinitialise a plugin instance by calling deactivate() | that hosts can reinitialise a plugin instance by calling deactivate() | ||||
and then activate(). In this case the plugin instance MUST reset all | and then activate(). In this case the plugin instance MUST reset all | ||||
state information dependent on the history of the plugin instance except | state information dependent on the history of the plugin instance except | ||||
for any data locations provided by connect_port(). If there is nothing | for any data locations provided by connect_port(). If there is nothing | ||||
for activate() to do then this field may be NULL. | for activate() to do then this field may be NULL. | ||||
When present, hosts MUST call this function once before run() is called | When present, hosts MUST call this function once before run() is called | ||||
for the first time. This call SHOULD be made as close to the run() call | for the first time. This call SHOULD be made as close to the run() call | ||||
as possible and indicates to real-time plugins that they are now live, | as possible and indicates to real-time plugins that they are now live, | ||||
@@ -267,17 +267,17 @@ typedef struct _LV2_Descriptor { | |||||
Note that if an activate() function exists then it must be called before | Note that if an activate() function exists then it must be called before | ||||
run(). If deactivate() is called for a plugin instance then run() may | run(). If deactivate() is called for a plugin instance then run() may | ||||
not be called until activate() has been called again. | not be called until activate() has been called again. | ||||
If the plugin has the feature lv2:hardRTCapable then there are various | If the plugin has the feature lv2:hardRTCapable then there are various | ||||
things that the plugin MUST NOT do within the run() function (see | things that the plugin MUST NOT do within the run() function (see | ||||
lv2core.ttl for details). | lv2core.ttl for details). | ||||
As a special case, when @c sample_count == 0, the plugin should update | |||||
As a special case, when @p sample_count == 0, the plugin should update | |||||
any output ports that represent a single instant in time (e.g. control | any output ports that represent a single instant in time (e.g. control | ||||
ports, but not audio ports). This is particularly useful for latent | ports, but not audio ports). This is particularly useful for latent | ||||
plugins, which should update their latency output port so hosts can | plugins, which should update their latency output port so hosts can | ||||
pre-roll plugins to compute latency. Plugins MUST NOT crash when | pre-roll plugins to compute latency. Plugins MUST NOT crash when | ||||
@c sample_count == 0. | |||||
@p sample_count == 0. | |||||
@param instance Instance to be run. | @param instance Instance to be run. | ||||
@@ -309,11 +309,11 @@ typedef struct _LV2_Descriptor { | |||||
/** | /** | ||||
Clean up a plugin instance (counterpart to instantiate()). | Clean up a plugin instance (counterpart to instantiate()). | ||||
Once an instance of a plugin has been finished with it must be deleted | Once an instance of a plugin has been finished with it must be deleted | ||||
using this function. The instance handle passed ceases to be valid after | using this function. The instance handle passed ceases to be valid after | ||||
this call. | this call. | ||||
If activate() was called for a plugin instance then a corresponding call | If activate() was called for a plugin instance then a corresponding call | ||||
to deactivate() MUST be made before cleanup() is called. Hosts MUST NOT | to deactivate() MUST be made before cleanup() is called. Hosts MUST NOT | ||||
call cleanup() unless instantiate() was previously called. | call cleanup() unless instantiate() was previously called. | ||||
@@ -325,12 +325,12 @@ typedef struct _LV2_Descriptor { | |||||
A typical use of this facility is to return a struct containing function | A typical use of this facility is to return a struct containing function | ||||
pointers to extend the LV2_Descriptor API. | pointers to extend the LV2_Descriptor API. | ||||
The actual type and meaning of the returned object MUST be specified | The actual type and meaning of the returned object MUST be specified | ||||
precisely by the extension. This function MUST return NULL for any | precisely by the extension. This function MUST return NULL for any | ||||
unsupported URI. If a plugin does not support any extension data, this | unsupported URI. If a plugin does not support any extension data, this | ||||
field may be NULL. | field may be NULL. | ||||
The host is never responsible for freeing the returned value. | The host is never responsible for freeing the returned value. | ||||
*/ | */ | ||||
const void * (*extension_data)(const char * uri); | const void * (*extension_data)(const char * uri); | ||||
@@ -354,7 +354,7 @@ typedef struct _LV2_Descriptor { | |||||
available during discovery, and it relies on non-portable shared library | available during discovery, and it relies on non-portable shared library | ||||
constructors/destructors. However, this API is still supported and plugins | constructors/destructors. However, this API is still supported and plugins | ||||
are not required to migrate. | are not required to migrate. | ||||
Plugins are discovered by hosts using RDF data (not by loading libraries). | Plugins are discovered by hosts using RDF data (not by loading libraries). | ||||
See http://lv2plug.in for details on the discovery process, though most | See http://lv2plug.in for details on the discovery process, though most | ||||
hosts should use an existing library to implement this functionality. | hosts should use an existing library to implement this functionality. | ||||
@@ -368,9 +368,9 @@ typedef struct _LV2_Descriptor { | |||||
function to find the LV2_Descriptor for the desired plugin. Plugins are | function to find the LV2_Descriptor for the desired plugin. Plugins are | ||||
accessed by index using values from 0 upwards. This function MUST return | accessed by index using values from 0 upwards. This function MUST return | ||||
NULL for out of range indices, so the host can enumerate plugins by | NULL for out of range indices, so the host can enumerate plugins by | ||||
increasing @c index until NULL is returned. | |||||
increasing @p index until NULL is returned. | |||||
Note that @c index has no meaning, hosts MUST NOT depend on it remaining | |||||
Note that @p index has no meaning, hosts MUST NOT depend on it remaining | |||||
consistent between loads of the plugin library. | consistent between loads of the plugin library. | ||||
*/ | */ | ||||
LV2_SYMBOL_EXPORT | LV2_SYMBOL_EXPORT | ||||
@@ -22,46 +22,47 @@ | |||||
#ifndef LV2_MIDI_H | #ifndef LV2_MIDI_H | ||||
#define LV2_MIDI_H | #define LV2_MIDI_H | ||||
#define LV2_MIDI_URI "http://lv2plug.in/ns/ext/midi" | |||||
#define LV2_MIDI_URI "http://lv2plug.in/ns/ext/midi" | |||||
#define LV2_MIDI_PREFIX LV2_MIDI_URI "#" | |||||
#define LV2_MIDI__ActiveSense LV2_MIDI_URI "#ActiveSense" | |||||
#define LV2_MIDI__Aftertouch LV2_MIDI_URI "#Aftertouch" | |||||
#define LV2_MIDI__Bender LV2_MIDI_URI "#Bender" | |||||
#define LV2_MIDI__ChannelPressure LV2_MIDI_URI "#ChannelPressure" | |||||
#define LV2_MIDI__Chunk LV2_MIDI_URI "#Chunk" | |||||
#define LV2_MIDI__Clock LV2_MIDI_URI "#Clock" | |||||
#define LV2_MIDI__Continue LV2_MIDI_URI "#Continue" | |||||
#define LV2_MIDI__Controller LV2_MIDI_URI "#Controller" | |||||
#define LV2_MIDI__MidiEvent LV2_MIDI_URI "#MidiEvent" | |||||
#define LV2_MIDI__NoteOff LV2_MIDI_URI "#NoteOff" | |||||
#define LV2_MIDI__NoteOn LV2_MIDI_URI "#NoteOn" | |||||
#define LV2_MIDI__ProgramChange LV2_MIDI_URI "#ProgramChange" | |||||
#define LV2_MIDI__QuarterFrame LV2_MIDI_URI "#QuarterFrame" | |||||
#define LV2_MIDI__Reset LV2_MIDI_URI "#Reset" | |||||
#define LV2_MIDI__SongPosition LV2_MIDI_URI "#SongPosition" | |||||
#define LV2_MIDI__SongSelect LV2_MIDI_URI "#SongSelect" | |||||
#define LV2_MIDI__Start LV2_MIDI_URI "#Start" | |||||
#define LV2_MIDI__Stop LV2_MIDI_URI "#Stop" | |||||
#define LV2_MIDI__SystemCommon LV2_MIDI_URI "#SystemCommon" | |||||
#define LV2_MIDI__SystemExclusive LV2_MIDI_URI "#SystemExclusive" | |||||
#define LV2_MIDI__SystemMessage LV2_MIDI_URI "#SystemMessage" | |||||
#define LV2_MIDI__SystemRealtime LV2_MIDI_URI "#SystemRealtime" | |||||
#define LV2_MIDI__Tick LV2_MIDI_URI "#Tick" | |||||
#define LV2_MIDI__TuneRequest LV2_MIDI_URI "#TuneRequest" | |||||
#define LV2_MIDI__VoiceMessage LV2_MIDI_URI "#VoiceMessage" | |||||
#define LV2_MIDI__benderValue LV2_MIDI_URI "#benderValue" | |||||
#define LV2_MIDI__byteNumber LV2_MIDI_URI "#byteNumber" | |||||
#define LV2_MIDI__chunk LV2_MIDI_URI "#chunk" | |||||
#define LV2_MIDI__controllerNumber LV2_MIDI_URI "#controllerNumber" | |||||
#define LV2_MIDI__controllerValue LV2_MIDI_URI "#controllerValue" | |||||
#define LV2_MIDI__noteNumber LV2_MIDI_URI "#noteNumber" | |||||
#define LV2_MIDI__pressure LV2_MIDI_URI "#pressure" | |||||
#define LV2_MIDI__programNumber LV2_MIDI_URI "#programNumber" | |||||
#define LV2_MIDI__property LV2_MIDI_URI "#property" | |||||
#define LV2_MIDI__songNumber LV2_MIDI_URI "#songNumber" | |||||
#define LV2_MIDI__songPosition LV2_MIDI_URI "#songPosition" | |||||
#define LV2_MIDI__status LV2_MIDI_URI "#status" | |||||
#define LV2_MIDI__statusMask LV2_MIDI_URI "#statusMask" | |||||
#define LV2_MIDI__velocity LV2_MIDI_URI "#velocity" | |||||
#define LV2_MIDI__ActiveSense LV2_MIDI_PREFIX "ActiveSense" | |||||
#define LV2_MIDI__Aftertouch LV2_MIDI_PREFIX "Aftertouch" | |||||
#define LV2_MIDI__Bender LV2_MIDI_PREFIX "Bender" | |||||
#define LV2_MIDI__ChannelPressure LV2_MIDI_PREFIX "ChannelPressure" | |||||
#define LV2_MIDI__Chunk LV2_MIDI_PREFIX "Chunk" | |||||
#define LV2_MIDI__Clock LV2_MIDI_PREFIX "Clock" | |||||
#define LV2_MIDI__Continue LV2_MIDI_PREFIX "Continue" | |||||
#define LV2_MIDI__Controller LV2_MIDI_PREFIX "Controller" | |||||
#define LV2_MIDI__MidiEvent LV2_MIDI_PREFIX "MidiEvent" | |||||
#define LV2_MIDI__NoteOff LV2_MIDI_PREFIX "NoteOff" | |||||
#define LV2_MIDI__NoteOn LV2_MIDI_PREFIX "NoteOn" | |||||
#define LV2_MIDI__ProgramChange LV2_MIDI_PREFIX "ProgramChange" | |||||
#define LV2_MIDI__QuarterFrame LV2_MIDI_PREFIX "QuarterFrame" | |||||
#define LV2_MIDI__Reset LV2_MIDI_PREFIX "Reset" | |||||
#define LV2_MIDI__SongPosition LV2_MIDI_PREFIX "SongPosition" | |||||
#define LV2_MIDI__SongSelect LV2_MIDI_PREFIX "SongSelect" | |||||
#define LV2_MIDI__Start LV2_MIDI_PREFIX "Start" | |||||
#define LV2_MIDI__Stop LV2_MIDI_PREFIX "Stop" | |||||
#define LV2_MIDI__SystemCommon LV2_MIDI_PREFIX "SystemCommon" | |||||
#define LV2_MIDI__SystemExclusive LV2_MIDI_PREFIX "SystemExclusive" | |||||
#define LV2_MIDI__SystemMessage LV2_MIDI_PREFIX "SystemMessage" | |||||
#define LV2_MIDI__SystemRealtime LV2_MIDI_PREFIX "SystemRealtime" | |||||
#define LV2_MIDI__Tick LV2_MIDI_PREFIX "Tick" | |||||
#define LV2_MIDI__TuneRequest LV2_MIDI_PREFIX "TuneRequest" | |||||
#define LV2_MIDI__VoiceMessage LV2_MIDI_PREFIX "VoiceMessage" | |||||
#define LV2_MIDI__benderValue LV2_MIDI_PREFIX "benderValue" | |||||
#define LV2_MIDI__byteNumber LV2_MIDI_PREFIX "byteNumber" | |||||
#define LV2_MIDI__chunk LV2_MIDI_PREFIX "chunk" | |||||
#define LV2_MIDI__controllerNumber LV2_MIDI_PREFIX "controllerNumber" | |||||
#define LV2_MIDI__controllerValue LV2_MIDI_PREFIX "controllerValue" | |||||
#define LV2_MIDI__noteNumber LV2_MIDI_PREFIX "noteNumber" | |||||
#define LV2_MIDI__pressure LV2_MIDI_PREFIX "pressure" | |||||
#define LV2_MIDI__programNumber LV2_MIDI_PREFIX "programNumber" | |||||
#define LV2_MIDI__property LV2_MIDI_PREFIX "property" | |||||
#define LV2_MIDI__songNumber LV2_MIDI_PREFIX "songNumber" | |||||
#define LV2_MIDI__songPosition LV2_MIDI_PREFIX "songPosition" | |||||
#define LV2_MIDI__status LV2_MIDI_PREFIX "status" | |||||
#define LV2_MIDI__statusMask LV2_MIDI_PREFIX "statusMask" | |||||
#define LV2_MIDI__velocity LV2_MIDI_PREFIX "velocity" | |||||
#endif /* LV2_MIDI_H */ | #endif /* LV2_MIDI_H */ |
@@ -54,7 +54,6 @@ typedef void* LV2_State_Make_Path_Handle; | |||||
(de-)serialise the value data, or whether it is even possible to do so. | (de-)serialise the value data, or whether it is even possible to do so. | ||||
*/ | */ | ||||
typedef enum { | typedef enum { | ||||
/** | /** | ||||
Plain Old Data. | Plain Old Data. | ||||
@@ -90,7 +89,6 @@ typedef enum { | |||||
and portability. | and portability. | ||||
*/ | */ | ||||
LV2_STATE_IS_NATIVE = 1 << 2 | LV2_STATE_IS_NATIVE = 1 << 2 | ||||
} LV2_State_Flags; | } LV2_State_Flags; | ||||
/** A status code for state functions. */ | /** A status code for state functions. */ | ||||
@@ -188,7 +186,6 @@ typedef const void* (*LV2_State_Retrieve_Function)( | |||||
with meaningful types to avoid such problems in the future. | with meaningful types to avoid such problems in the future. | ||||
*/ | */ | ||||
typedef struct _LV2_State_Interface { | typedef struct _LV2_State_Interface { | ||||
/** | /** | ||||
Save plugin state using a host-provided @p store callback. | Save plugin state using a host-provided @p store callback. | ||||
@@ -261,14 +258,12 @@ typedef struct _LV2_State_Interface { | |||||
LV2_State_Handle handle, | LV2_State_Handle handle, | ||||
uint32_t flags, | uint32_t flags, | ||||
const LV2_Feature *const * features); | const LV2_Feature *const * features); | ||||
} LV2_State_Interface; | } LV2_State_Interface; | ||||
/** | /** | ||||
Feature data for state:mapPath (LV2_STATE__mapPath). | Feature data for state:mapPath (LV2_STATE__mapPath). | ||||
*/ | */ | ||||
typedef struct { | typedef struct { | ||||
/** | /** | ||||
Opaque host data. | Opaque host data. | ||||
*/ | */ | ||||
@@ -311,14 +306,12 @@ typedef struct { | |||||
*/ | */ | ||||
char* (*absolute_path)(LV2_State_Map_Path_Handle handle, | char* (*absolute_path)(LV2_State_Map_Path_Handle handle, | ||||
const char* abstract_path); | const char* abstract_path); | ||||
} LV2_State_Map_Path; | } LV2_State_Map_Path; | ||||
/** | /** | ||||
Feature data for state:makePath (@ref LV2_STATE__makePath). | Feature data for state:makePath (@ref LV2_STATE__makePath). | ||||
*/ | */ | ||||
typedef struct { | typedef struct { | ||||
/** | /** | ||||
Opaque host data. | Opaque host data. | ||||
*/ | */ | ||||
@@ -349,7 +342,6 @@ typedef struct { | |||||
*/ | */ | ||||
char* (*path)(LV2_State_Make_Path_Handle handle, | char* (*path)(LV2_State_Make_Path_Handle handle, | ||||
const char* path); | const char* path); | ||||
} LV2_State_Make_Path; | } LV2_State_Make_Path; | ||||
#ifdef __cplusplus | #ifdef __cplusplus | ||||
@@ -36,6 +36,7 @@ | |||||
#define LV2_UI__Qt4UI LV2_UI_PREFIX "Qt4UI" | #define LV2_UI__Qt4UI LV2_UI_PREFIX "Qt4UI" | ||||
#define LV2_UI__UI LV2_UI_PREFIX "UI" | #define LV2_UI__UI LV2_UI_PREFIX "UI" | ||||
#define LV2_UI__X11UI LV2_UI_PREFIX "X11UI" | #define LV2_UI__X11UI LV2_UI_PREFIX "X11UI" | ||||
#define LV2_UI__binary LV2_UI_PREFIX "binary" | |||||
#define LV2_UI__fixedSize LV2_UI_PREFIX "fixedSize" | #define LV2_UI__fixedSize LV2_UI_PREFIX "fixedSize" | ||||
#define LV2_UI__noUserResize LV2_UI_PREFIX "noUserResize" | #define LV2_UI__noUserResize LV2_UI_PREFIX "noUserResize" | ||||
#define LV2_UI__notifyType LV2_UI_PREFIX "notifyType" | #define LV2_UI__notifyType LV2_UI_PREFIX "notifyType" | ||||
@@ -47,6 +48,7 @@ | |||||
#define LV2_UI__portSubscribe LV2_UI_PREFIX "portSubscribe" | #define LV2_UI__portSubscribe LV2_UI_PREFIX "portSubscribe" | ||||
#define LV2_UI__resize LV2_UI_PREFIX "resize" | #define LV2_UI__resize LV2_UI_PREFIX "resize" | ||||
#define LV2_UI__touch LV2_UI_PREFIX "touch" | #define LV2_UI__touch LV2_UI_PREFIX "touch" | ||||
#define LV2_UI__ui LV2_UI_PREFIX "ui" | |||||
/** | /** | ||||
The index returned by LV2_UI_Port_Port::port_index() for unknown ports. | The index returned by LV2_UI_Port_Port::port_index() for unknown ports. | ||||
@@ -93,12 +95,12 @@ typedef void* LV2UI_Feature_Handle; | |||||
The type of the host-provided function that the UI can use to | The type of the host-provided function that the UI can use to | ||||
send data to a plugin's input ports. | send data to a plugin's input ports. | ||||
The @c buffer parameter must point to a block of data, @c buffer_size bytes | |||||
The @p buffer parameter must point to a block of data, @c buffer_size bytes | |||||
large. The format of this data and how the host should use it is defined by | large. The format of this data and how the host should use it is defined by | ||||
the @c port_protocol. This buffer is owned by the UI and is only valid for | |||||
the @p port_protocol. This buffer is owned by the UI and is only valid for | |||||
the duration of this call. | the duration of this call. | ||||
The @c port_protocol parameter should either be 0 or the URID for a | |||||
The @p port_protocol parameter should either be 0 or the URID for a | |||||
ui:PortProtocol. If it is 0, the protocol is implicitly ui:floatProtocol, | ui:PortProtocol. If it is 0, the protocol is implicitly ui:floatProtocol, | ||||
the port must be an lv2:ControlPort input, @c buffer must point to a single | the port must be an lv2:ControlPort input, @c buffer must point to a single | ||||
float value, and @c buffer_size must be sizeof(float). | float value, and @c buffer_size must be sizeof(float). | ||||
@@ -120,114 +122,94 @@ typedef void (*LV2UI_Write_Function)(LV2UI_Controller controller, | |||||
function. | function. | ||||
*/ | */ | ||||
typedef struct _LV2UI_Descriptor { | typedef struct _LV2UI_Descriptor { | ||||
/** | |||||
The URI for this UI (not for the plugin it controls). | |||||
*/ | |||||
const char* URI; | |||||
/** | |||||
Create a new UI object and return a handle to it. This function works | |||||
similarly to the instantiate() member in LV2_Descriptor. | |||||
@param descriptor The descriptor for the UI that you want to instantiate. | |||||
@param plugin_uri The URI of the plugin that this UI will control. | |||||
@param bundle_path The path to the bundle containing the RDF data file | |||||
that references this shared object file, including the trailing '/'. | |||||
@param write_function A function provided by the host that the UI can use | |||||
to send data to the plugin's input ports. | |||||
@param controller A handle for the plugin instance that should be passed | |||||
as the first parameter of @c write_function. | |||||
@param widget A pointer to an LV2UI_Widget. The UI will write a widget | |||||
pointer to this location (what type of widget depends on the RDF class of | |||||
the UI) that will be the main UI widget. | |||||
@param features An array of LV2_Feature pointers. The host must pass all | |||||
feature URIs that it and the UI supports and any additional data, just | |||||
like in the LV2 plugin instantiate() function. Note that UI features and | |||||
plugin features are NOT necessarily the same, they just share the same | |||||
data structure - this will probably not be the same array as the one the | |||||
plugin host passes to a plugin. | |||||
*/ | |||||
LV2UI_Handle (*instantiate)(const struct _LV2UI_Descriptor* descriptor, | |||||
const char* plugin_uri, | |||||
const char* bundle_path, | |||||
LV2UI_Write_Function write_function, | |||||
LV2UI_Controller controller, | |||||
LV2UI_Widget* widget, | |||||
const LV2_Feature* const* features); | |||||
/** | |||||
Destroy the UI object and the associated widget. The host must not try | |||||
to access the widget after calling this function. | |||||
*/ | |||||
void (*cleanup)(LV2UI_Handle ui); | |||||
/** | |||||
Tell the UI that something interesting has happened at a plugin port. | |||||
What is interesting and how it is written to the buffer passed to this | |||||
function is defined by the @c format parameter, which has the same meaning | |||||
as in LV2UI_Write_Function. The only exception is ports of the class | |||||
lv2:ControlPort, for which this function should be called when the port | |||||
value changes (it does not have to be called for every single change if | |||||
the host's UI thread has problems keeping up with the thread the plugin is | |||||
running in), @c buffer_size should be 4, the buffer should contain a | |||||
single IEEE-754 float, and @c format should be 0. | |||||
By default, the host should only call this function for input ports of the | |||||
lv2:ControlPort class. However, the default setting can be modified by | |||||
using the following URIs in the UI's RDF data: | |||||
<pre> | |||||
uiext:portNotification | |||||
uiext:noPortNotification | |||||
uiext:plugin | |||||
uiext:portIndex | |||||
</pre> | |||||
For example, if you want the UI with uri | |||||
<code><http://my.pluginui></code> for the plugin with URI | |||||
<code><http://my.plugin></code> to get notified when the value of the | |||||
output control port with index 4 changes, you would use the following | |||||
in the RDF for your UI: | |||||
<pre> | |||||
<http://my.pluginui> uiext:portNotification [ uiext:plugin <http://my.plugin> ; | |||||
uiext:portIndex 4 ] . | |||||
</pre> | |||||
and similarly with <code>uiext:noPortNotification</code> if you wanted | |||||
to prevent notifications for a port for which it would be on by default | |||||
otherwise. The UI is not allowed to request notifications for ports of | |||||
types for which no transfer mechanism is specified, if it does it should | |||||
be considered broken and the host should not load it. | |||||
The @c buffer is only valid during the time of this function call, so if | |||||
the UI wants to keep it for later use it has to copy the contents to an | |||||
internal buffer. | |||||
This member may be set to NULL if the UI is not interested in any | |||||
port events. | |||||
*/ | |||||
void (*port_event)(LV2UI_Handle ui, | |||||
uint32_t port_index, | |||||
uint32_t buffer_size, | |||||
uint32_t format, | |||||
const void* buffer); | |||||
/** | |||||
Return a data structure associated with an extension URI, for example | |||||
a struct containing additional function pointers. | |||||
Avoid returning function pointers directly since standard C/C++ has no | |||||
valid way of casting a void* to a function pointer. This member may be set | |||||
to NULL if the UI is not interested in supporting any extensions. This is | |||||
similar to the extension_data() member in LV2_Descriptor. | |||||
*/ | |||||
const void* (*extension_data)(const char* uri); | |||||
/** | |||||
The URI for this UI (not for the plugin it controls). | |||||
*/ | |||||
const char* URI; | |||||
/** | |||||
Create a new UI object and return a handle to it. This function works | |||||
similarly to the instantiate() member in LV2_Descriptor. | |||||
@param descriptor The descriptor for the UI that you want to instantiate. | |||||
@param plugin_uri The URI of the plugin that this UI will control. | |||||
@param bundle_path The path to the bundle containing the RDF data file | |||||
that references this shared object file, including the trailing '/'. | |||||
@param write_function A function provided by the host that the UI can use | |||||
to send data to the plugin's input ports. | |||||
@param controller A handle for the plugin instance that should be passed | |||||
as the first parameter of @p write_function. | |||||
@param widget A pointer to an LV2UI_Widget. The UI will write a widget | |||||
pointer to this location (what type of widget depends on the RDF class of | |||||
the UI) that will be the main UI widget. | |||||
@param features An array of LV2_Feature pointers. The host must pass all | |||||
feature URIs that it and the UI supports and any additional data, just | |||||
like in the LV2 plugin instantiate() function. Note that UI features and | |||||
plugin features are NOT necessarily the same, they just share the same | |||||
data structure - this will probably not be the same array as the one the | |||||
plugin host passes to a plugin. | |||||
*/ | |||||
LV2UI_Handle (*instantiate)(const struct _LV2UI_Descriptor* descriptor, | |||||
const char* plugin_uri, | |||||
const char* bundle_path, | |||||
LV2UI_Write_Function write_function, | |||||
LV2UI_Controller controller, | |||||
LV2UI_Widget* widget, | |||||
const LV2_Feature* const* features); | |||||
/** | |||||
Destroy the UI object and the associated widget. The host must not try | |||||
to access the widget after calling this function. | |||||
*/ | |||||
void (*cleanup)(LV2UI_Handle ui); | |||||
/** | |||||
Tell the UI that something interesting has happened at a plugin port. | |||||
What is interesting and how it is written to the buffer passed to this | |||||
function is defined by the @p format parameter, which has the same | |||||
meaning as in LV2UI_Write_Function. The only exception is ports of the | |||||
class lv2:ControlPort, for which this function should be called when the | |||||
port value changes (it does not have to be called for every single change | |||||
if the host's UI thread has problems keeping up with the thread the | |||||
plugin is running in), @p buffer_size should be 4, the buffer should | |||||
contain a single IEEE-754 float, and @p format should be 0. | |||||
By default, the host should only call this function for input ports of | |||||
the lv2:ControlPort class. However, this can be modified by using | |||||
ui:portNotification in the UI data, or the ui:portSubscribe feature. | |||||
The @p buffer is only valid during the time of this function call, so if | |||||
the UI wants to keep it for later use it has to copy the contents to an | |||||
internal buffer. | |||||
This member may be set to NULL if the UI is not interested in any | |||||
port events. | |||||
*/ | |||||
void (*port_event)(LV2UI_Handle ui, | |||||
uint32_t port_index, | |||||
uint32_t buffer_size, | |||||
uint32_t format, | |||||
const void* buffer); | |||||
/** | |||||
Return a data structure associated with an extension URI, for example | |||||
a struct containing additional function pointers. | |||||
Avoid returning function pointers directly since standard C/C++ has no | |||||
valid way of casting a void* to a function pointer. This member may be set | |||||
to NULL if the UI is not interested in supporting any extensions. This is | |||||
similar to the extension_data() member in LV2_Descriptor. | |||||
*/ | |||||
const void* (*extension_data)(const char* uri); | |||||
} LV2UI_Descriptor; | } LV2UI_Descriptor; | ||||
/** | /** | ||||
@@ -295,18 +277,19 @@ typedef struct _LV2UI_Port_Subscribe { | |||||
This means that the host will call the UI's port_event() function when | This means that the host will call the UI's port_event() function when | ||||
the port value changes (as defined by protocol). | the port value changes (as defined by protocol). | ||||
Calling this function with the same @c port_index and @c port_protocol | |||||
Calling this function with the same @p port_index and @p port_protocol | |||||
as an already active subscription has no effect. | as an already active subscription has no effect. | ||||
@param handle The handle field of this struct. | @param handle The handle field of this struct. | ||||
@param port_index The index of the port. | @param port_index The index of the port. | ||||
@param port_protocol The URID of the ui:PortProtocol. | @param port_protocol The URID of the ui:PortProtocol. | ||||
@param data Extra data as defined by the port protocol, or NULL. | |||||
@param features Features for this subscription. | |||||
@return 0 on success. | |||||
*/ | */ | ||||
void (*subscribe)(LV2UI_Feature_Handle handle, | |||||
uint32_t port_index, | |||||
uint32_t port_protocol, | |||||
const void* options); | |||||
uint32_t (*subscribe)(LV2UI_Feature_Handle handle, | |||||
uint32_t port_index, | |||||
uint32_t port_protocol, | |||||
const LV2_Feature* const* features); | |||||
/** | /** | ||||
Unsubscribe from updates for a port. | Unsubscribe from updates for a port. | ||||
@@ -314,18 +297,19 @@ typedef struct _LV2UI_Port_Subscribe { | |||||
This means that the host will cease calling calling port_event() when | This means that the host will cease calling calling port_event() when | ||||
the port value changes. | the port value changes. | ||||
Calling this function with a @c port_index and @c port_protocol that | |||||
Calling this function with a @p port_index and @p port_protocol that | |||||
does not refer to an active port subscription has no effect. | does not refer to an active port subscription has no effect. | ||||
@param handle The handle field of this struct. | @param handle The handle field of this struct. | ||||
@param port_index The index of the port. | @param port_index The index of the port. | ||||
@param port_protocol The URID of the ui:PortProtocol. | @param port_protocol The URID of the ui:PortProtocol. | ||||
@param data Extra data as defined by the port protocol, or NULL. | |||||
@param features Features for this subscription. | |||||
@return 0 on success. | |||||
*/ | */ | ||||
void (*unsubscribe)(LV2UI_Feature_Handle handle, | |||||
uint32_t port_index, | |||||
uint32_t port_protocol, | |||||
const void* options); | |||||
uint32_t (*unsubscribe)(LV2UI_Feature_Handle handle, | |||||
uint32_t port_index, | |||||
uint32_t port_protocol, | |||||
const LV2_Feature* const* features); | |||||
} LV2UI_Port_Subscribe; | } LV2UI_Port_Subscribe; | ||||
/** | /** | ||||
@@ -17,7 +17,7 @@ | |||||
/** | /** | ||||
@file | @file | ||||
C header for the LV2 URI Map extension <http://lv2plug.in/ns/ext/uri-map>. | C header for the LV2 URI Map extension <http://lv2plug.in/ns/ext/uri-map>. | ||||
This extension defines a simple mechanism for plugins to map URIs to | This extension defines a simple mechanism for plugins to map URIs to | ||||
integers, usually for performance reasons (e.g. processing events typed by | integers, usually for performance reasons (e.g. processing events typed by | ||||
URIs in real time). The expected use case is for plugins to map URIs to | URIs in real time). The expected use case is for plugins to map URIs to | ||||
@@ -41,16 +41,15 @@ typedef void* LV2_URI_Map_Callback_Data; | |||||
/** | /** | ||||
URI Map Feature. | URI Map Feature. | ||||
To support this feature the host must pass an LV2_Feature struct to the | To support this feature the host must pass an LV2_Feature struct to the | ||||
plugin's instantiate method with URI "http://lv2plug.in/ns/ext/uri-map" | plugin's instantiate method with URI "http://lv2plug.in/ns/ext/uri-map" | ||||
and data pointed to an instance of this struct. | and data pointed to an instance of this struct. | ||||
*/ | */ | ||||
typedef struct { | typedef struct { | ||||
/** | /** | ||||
Opaque pointer to host data. | Opaque pointer to host data. | ||||
The plugin MUST pass this to any call to functions in this struct. | The plugin MUST pass this to any call to functions in this struct. | ||||
Otherwise, it must not be interpreted in any way. | Otherwise, it must not be interpreted in any way. | ||||
*/ | */ | ||||
@@ -58,7 +57,7 @@ typedef struct { | |||||
/** | /** | ||||
Get the numeric ID of a URI from the host. | Get the numeric ID of a URI from the host. | ||||
@param callback_data Must be the callback_data member of this struct. | @param callback_data Must be the callback_data member of this struct. | ||||
@param map The 'context' of this URI. Certain extensions may define a | @param map The 'context' of this URI. Certain extensions may define a | ||||
URI that must be passed here with certain restrictions on the return | URI that must be passed here with certain restrictions on the return | ||||
@@ -67,14 +66,14 @@ typedef struct { | |||||
unless there is a specific need to do so, e.g. to restrict the range of | unless there is a specific need to do so, e.g. to restrict the range of | ||||
the returned value. | the returned value. | ||||
@param uri The URI to be mapped to an integer ID. | @param uri The URI to be mapped to an integer ID. | ||||
This function is referentially transparent; any number of calls with the | This function is referentially transparent; any number of calls with the | ||||
same arguments is guaranteed to return the same value over the life of a | same arguments is guaranteed to return the same value over the life of a | ||||
plugin instance (though the same URI may return different values with a | plugin instance (though the same URI may return different values with a | ||||
different map parameter). However, this function is not necessarily very | different map parameter). However, this function is not necessarily very | ||||
fast: plugins SHOULD cache any IDs they might need in performance | fast: plugins SHOULD cache any IDs they might need in performance | ||||
critical situations. | critical situations. | ||||
The return value 0 is reserved and indicates that an ID for that URI | The return value 0 is reserved and indicates that an ID for that URI | ||||
could not be created for whatever reason. Extensions MAY define more | could not be created for whatever reason. Extensions MAY define more | ||||
precisely what this means in a certain context, but in general plugins | precisely what this means in a certain context, but in general plugins | ||||
@@ -86,7 +85,6 @@ typedef struct { | |||||
uint32_t (*uri_to_id)(LV2_URI_Map_Callback_Data callback_data, | uint32_t (*uri_to_id)(LV2_URI_Map_Callback_Data callback_data, | ||||
const char* map, | const char* map, | ||||
const char* uri); | const char* uri); | ||||
} LV2_URI_Map_Feature; | } LV2_URI_Map_Feature; | ||||
#endif /* LV2_URI_MAP_H */ | #endif /* LV2_URI_MAP_H */ |
@@ -1,6 +1,6 @@ | |||||
/* | /* | ||||
Copyright 2008-2012 David Robillard <http://drobilla.net> | |||||
Copyright 2011 Gabriel M. Beddingfield <gabrbedd@gmail.com> | Copyright 2011 Gabriel M. Beddingfield <gabrbedd@gmail.com> | ||||
Copyright 2008-2011 David Robillard <http://drobilla.net> | |||||
Permission to use, copy, modify, and/or distribute this software for any | Permission to use, copy, modify, and/or distribute this software for any | ||||
purpose with or without fee is hereby granted, provided that the above | purpose with or without fee is hereby granted, provided that the above | ||||
@@ -16,7 +16,7 @@ | |||||
*/ | */ | ||||
/** | /** | ||||
@file | |||||
@file urid.h | |||||
C header for the LV2 URID extension <http://lv2plug.in/ns/ext/urid> | C header for the LV2 URID extension <http://lv2plug.in/ns/ext/urid> | ||||
*/ | */ | ||||
@@ -51,9 +51,9 @@ typedef void* LV2_URID_Unmap_Handle; | |||||
typedef uint32_t LV2_URID; | typedef uint32_t LV2_URID; | ||||
/** | /** | ||||
URI Map (http://lv2plug.in/ns/ext/urid#map). | |||||
URID Map Feature (LV2_URID__map) | |||||
*/ | */ | ||||
typedef struct { | |||||
typedef struct _LV2_URID_Map { | |||||
/** | /** | ||||
Opaque pointer to host data. | Opaque pointer to host data. | ||||
@@ -88,9 +88,9 @@ typedef struct { | |||||
} LV2_URID_Map; | } LV2_URID_Map; | ||||
/** | /** | ||||
URI Unmap (http://lv2plug.in/ns/ext/urid#unmap). | |||||
URI Unmap Feature (LV2_URID__unmap) | |||||
*/ | */ | ||||
typedef struct { | |||||
typedef struct _LV2_URID_Unmap { | |||||
/** | /** | ||||
Opaque pointer to host data. | Opaque pointer to host data. | ||||
@@ -102,11 +102,11 @@ typedef struct { | |||||
/** | /** | ||||
Get the URI for a previously mapped numeric ID. | Get the URI for a previously mapped numeric ID. | ||||
Returns NULL if @c urid is not yet mapped. Otherwise, the corresponding | |||||
Returns NULL if @p urid is not yet mapped. Otherwise, the corresponding | |||||
URI is returned in a canonical form. This MAY not be the exact same | URI is returned in a canonical form. This MAY not be the exact same | ||||
string that was originally passed to LV2_URID_Map::map(), but it MUST be | string that was originally passed to LV2_URID_Map::map(), but it MUST be | ||||
an identical URI according to the URI syntax specification (RFC3986). A | an identical URI according to the URI syntax specification (RFC3986). A | ||||
non-NULL return for a given @c urid will always be the same for the life | |||||
non-NULL return for a given @p urid will always be the same for the life | |||||
of the plugin. Plugins that intend to perform string comparison on | of the plugin. Plugins that intend to perform string comparison on | ||||
unmapped URIs SHOULD first canonicalise URI strings with a call to | unmapped URIs SHOULD first canonicalise URI strings with a call to | ||||
map_uri() followed by a call to unmap_uri(). | map_uri() followed by a call to unmap_uri(). | ||||
@@ -28,10 +28,12 @@ | |||||
#include "lv2/event.h" | #include "lv2/event.h" | ||||
#include "lv2/event-helpers.h" | #include "lv2/event-helpers.h" | ||||
#include "lv2/instance-access.h" | #include "lv2/instance-access.h" | ||||
#include "lv2/midi.h" | |||||
#include "lv2/state.h" | #include "lv2/state.h" | ||||
#include "lv2/time.h" | |||||
#include "lv2/ui.h" | |||||
#include "lv2/uri-map.h" | #include "lv2/uri-map.h" | ||||
#include "lv2/urid.h" | #include "lv2/urid.h" | ||||
#include "lv2/ui.h" | |||||
#include "lv2/lv2-miditype.h" | #include "lv2/lv2-miditype.h" | ||||
#include "lv2/lv2-midifunctions.h" | #include "lv2/lv2-midifunctions.h" | ||||