| @@ -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" | ||||