LMMS
Loading...
Searching...
No Matches
lilv.h File Reference
#include <stdarg.h>
#include <stddef.h>
#include <stdint.h>
#include <stdio.h>
#include "lv2/lv2.h"
#include "lv2/state.h"
#include "lv2/urid.h"
#include <stdbool.h>

Go to the source code of this file.

Macros

#define LILV_API
#define LILV_DEPRECATED
#define LILV_NS_DOAP   "http://usefulinc.com/ns/doap#"
#define LILV_NS_FOAF   "http://xmlns.com/foaf/0.1/"
#define LILV_NS_LILV   "http://drobilla.net/ns/lilv#"
#define LILV_NS_LV2   "http://lv2plug.in/ns/lv2core#"
#define LILV_NS_OWL   "http://www.w3.org/2002/07/owl#"
#define LILV_NS_RDF   "http://www.w3.org/1999/02/22-rdf-syntax-ns#"
#define LILV_NS_RDFS   "http://www.w3.org/2000/01/rdf-schema#"
#define LILV_NS_XSD   "http://www.w3.org/2001/XMLSchema#"
#define LILV_URI_ATOM_PORT   "http://lv2plug.in/ns/ext/atom#AtomPort"
#define LILV_URI_AUDIO_PORT   "http://lv2plug.in/ns/lv2core#AudioPort"
#define LILV_URI_CONTROL_PORT   "http://lv2plug.in/ns/lv2core#ControlPort"
#define LILV_URI_CV_PORT   "http://lv2plug.in/ns/lv2core#CVPort"
#define LILV_URI_EVENT_PORT   "http://lv2plug.in/ns/ext/event#EventPort"
#define LILV_URI_INPUT_PORT   "http://lv2plug.in/ns/lv2core#InputPort"
#define LILV_URI_MIDI_EVENT   "http://lv2plug.in/ns/ext/midi#MidiEvent"
#define LILV_URI_OUTPUT_PORT   "http://lv2plug.in/ns/lv2core#OutputPort"
#define LILV_URI_PORT   "http://lv2plug.in/ns/lv2core#Port"

Functions

LILV_API void lilv_free (void *ptr)
Node
LILV_API LILV_DEPRECATED const char * lilv_uri_to_path (const char *uri)
LILV_API char * lilv_file_uri_parse (const char *uri, char **hostname)
LILV_API LilvNodelilv_new_uri (LilvWorld *world, const char *uri)
LILV_API LilvNodelilv_new_file_uri (LilvWorld *world, const char *host, const char *path)
LILV_API LilvNodelilv_new_string (LilvWorld *world, const char *str)
LILV_API LilvNodelilv_new_int (LilvWorld *world, int val)
LILV_API LilvNodelilv_new_float (LilvWorld *world, float val)
LILV_API LilvNodelilv_new_bool (LilvWorld *world, bool val)
LILV_API void lilv_node_free (LilvNode *val)
LILV_API LilvNodelilv_node_duplicate (const LilvNode *val)
LILV_API bool lilv_node_equals (const LilvNode *value, const LilvNode *other)
LILV_API char * lilv_node_get_turtle_token (const LilvNode *value)
LILV_API bool lilv_node_is_uri (const LilvNode *value)
LILV_API const char * lilv_node_as_uri (const LilvNode *value)
LILV_API bool lilv_node_is_blank (const LilvNode *value)
LILV_API const char * lilv_node_as_blank (const LilvNode *value)
LILV_API bool lilv_node_is_literal (const LilvNode *value)
LILV_API bool lilv_node_is_string (const LilvNode *value)
LILV_API const char * lilv_node_as_string (const LilvNode *value)
LILV_API char * lilv_node_get_path (const LilvNode *value, char **hostname)
LILV_API bool lilv_node_is_float (const LilvNode *value)
LILV_API float lilv_node_as_float (const LilvNode *value)
LILV_API bool lilv_node_is_int (const LilvNode *value)
LILV_API int lilv_node_as_int (const LilvNode *value)
LILV_API bool lilv_node_is_bool (const LilvNode *value)
LILV_API bool lilv_node_as_bool (const LilvNode *value)
Plugin
LILV_API bool lilv_plugin_verify (const LilvPlugin *plugin)
LILV_API const LilvNodelilv_plugin_get_uri (const LilvPlugin *plugin)
LILV_API const LilvNodelilv_plugin_get_bundle_uri (const LilvPlugin *plugin)
LILV_API const LilvNodeslilv_plugin_get_data_uris (const LilvPlugin *plugin)
LILV_API const LilvNodelilv_plugin_get_library_uri (const LilvPlugin *plugin)
LILV_API LilvNodelilv_plugin_get_name (const LilvPlugin *plugin)
LILV_API const LilvPluginClasslilv_plugin_get_class (const LilvPlugin *plugin)
LILV_API LilvNodeslilv_plugin_get_value (const LilvPlugin *p, const LilvNode *predicate)
LILV_API bool lilv_plugin_has_feature (const LilvPlugin *p, const LilvNode *feature_uri)
LILV_API LilvNodeslilv_plugin_get_supported_features (const LilvPlugin *p)
LILV_API LilvNodeslilv_plugin_get_required_features (const LilvPlugin *p)
LILV_API LilvNodeslilv_plugin_get_optional_features (const LilvPlugin *p)
LILV_API bool lilv_plugin_has_extension_data (const LilvPlugin *p, const LilvNode *uri)
LILV_API LilvNodeslilv_plugin_get_extension_data (const LilvPlugin *p)
LILV_API uint32_t lilv_plugin_get_num_ports (const LilvPlugin *p)
LILV_API void lilv_plugin_get_port_ranges_float (const LilvPlugin *p, float *min_values, float *max_values, float *def_values)
LILV_API uint32_t lilv_plugin_get_num_ports_of_class (const LilvPlugin *p, const LilvNode *class_1,...)
LILV_API uint32_t lilv_plugin_get_num_ports_of_class_va (const LilvPlugin *p, const LilvNode *class_1, va_list args)
LILV_API bool lilv_plugin_has_latency (const LilvPlugin *p)
LILV_API uint32_t lilv_plugin_get_latency_port_index (const LilvPlugin *p)
LILV_API const LilvPortlilv_plugin_get_port_by_index (const LilvPlugin *plugin, uint32_t index)
LILV_API const LilvPortlilv_plugin_get_port_by_symbol (const LilvPlugin *plugin, const LilvNode *symbol)
LILV_API const LilvPortlilv_plugin_get_port_by_designation (const LilvPlugin *plugin, const LilvNode *port_class, const LilvNode *designation)
LILV_API LilvNodelilv_plugin_get_project (const LilvPlugin *plugin)
LILV_API LilvNodelilv_plugin_get_author_name (const LilvPlugin *plugin)
LILV_API LilvNodelilv_plugin_get_author_email (const LilvPlugin *plugin)
LILV_API LilvNodelilv_plugin_get_author_homepage (const LilvPlugin *plugin)
LILV_API bool lilv_plugin_is_replaced (const LilvPlugin *plugin)
LILV_API void lilv_plugin_write_description (LilvWorld *world, const LilvPlugin *plugin, const LilvNode *base_uri, FILE *plugin_file)
LILV_API void lilv_plugin_write_manifest_entry (LilvWorld *world, const LilvPlugin *plugin, const LilvNode *base_uri, FILE *manifest_file, const char *plugin_file_path)
LILV_API LilvNodeslilv_plugin_get_related (const LilvPlugin *plugin, const LilvNode *type)
Port
LILV_API const LilvNodelilv_port_get_node (const LilvPlugin *plugin, const LilvPort *port)
LILV_API LilvNodeslilv_port_get_value (const LilvPlugin *plugin, const LilvPort *port, const LilvNode *predicate)
LILV_API LilvNodelilv_port_get (const LilvPlugin *plugin, const LilvPort *port, const LilvNode *predicate)
LILV_API LilvNodeslilv_port_get_properties (const LilvPlugin *plugin, const LilvPort *port)
LILV_API bool lilv_port_has_property (const LilvPlugin *p, const LilvPort *port, const LilvNode *property_uri)
LILV_API bool lilv_port_supports_event (const LilvPlugin *p, const LilvPort *port, const LilvNode *event_type)
LILV_API uint32_t lilv_port_get_index (const LilvPlugin *plugin, const LilvPort *port)
LILV_API const LilvNodelilv_port_get_symbol (const LilvPlugin *plugin, const LilvPort *port)
LILV_API LilvNodelilv_port_get_name (const LilvPlugin *plugin, const LilvPort *port)
LILV_API const LilvNodeslilv_port_get_classes (const LilvPlugin *plugin, const LilvPort *port)
LILV_API bool lilv_port_is_a (const LilvPlugin *plugin, const LilvPort *port, const LilvNode *port_class)
LILV_API void lilv_port_get_range (const LilvPlugin *plugin, const LilvPort *port, LilvNode **deflt, LilvNode **min, LilvNode **max)
LILV_API LilvScalePointslilv_port_get_scale_points (const LilvPlugin *plugin, const LilvPort *port)
Scale Point
LILV_API const LilvNodelilv_scale_point_get_label (const LilvScalePoint *point)
LILV_API const LilvNodelilv_scale_point_get_value (const LilvScalePoint *point)
Plugin Class
LILV_API const LilvNodelilv_plugin_class_get_parent_uri (const LilvPluginClass *plugin_class)
LILV_API const LilvNodelilv_plugin_class_get_uri (const LilvPluginClass *plugin_class)
LILV_API const LilvNodelilv_plugin_class_get_label (const LilvPluginClass *plugin_class)
LILV_API LilvPluginClasseslilv_plugin_class_get_children (const LilvPluginClass *plugin_class)
Plugin Instance
LILV_API LilvInstancelilv_plugin_instantiate (const LilvPlugin *plugin, double sample_rate, const LV2_Feature *const *features)
LILV_API void lilv_instance_free (LilvInstance *instance)
static const char * lilv_instance_get_uri (const LilvInstance *instance)
static void lilv_instance_connect_port (LilvInstance *instance, uint32_t port_index, void *data_location)
static void lilv_instance_activate (LilvInstance *instance)
static void lilv_instance_run (LilvInstance *instance, uint32_t sample_count)
static void lilv_instance_deactivate (LilvInstance *instance)
static const voidlilv_instance_get_extension_data (const LilvInstance *instance, const char *uri)
static const LV2_Descriptorlilv_instance_get_descriptor (const LilvInstance *instance)
static LV2_Handle lilv_instance_get_handle (const LilvInstance *instance)

Collections

Lilv has several collection types for holding various types of value:

Each collection type supports a similar basic API (except LilvPlugins which is internal and thus lacks a free function):

  • void PREFIX_free (coll)
  • unsigned PREFIX_size (coll)
  • LilvIter* PREFIX_begin (coll)
#define LILV_FOREACH(colltype, iter, collection)
LILV_API void lilv_plugin_classes_free (LilvPluginClasses *collection)
LILV_API unsigned lilv_plugin_classes_size (const LilvPluginClasses *collection)
LILV_API LilvIterlilv_plugin_classes_begin (const LilvPluginClasses *collection)
LILV_API const LilvPluginClasslilv_plugin_classes_get (const LilvPluginClasses *collection, LilvIter *i)
LILV_API LilvIterlilv_plugin_classes_next (const LilvPluginClasses *collection, LilvIter *i)
LILV_API bool lilv_plugin_classes_is_end (const LilvPluginClasses *collection, LilvIter *i)
LILV_API const LilvPluginClasslilv_plugin_classes_get_by_uri (const LilvPluginClasses *classes, const LilvNode *uri)
LILV_API void lilv_scale_points_free (LilvScalePoints *collection)
LILV_API unsigned lilv_scale_points_size (const LilvScalePoints *collection)
LILV_API LilvIterlilv_scale_points_begin (const LilvScalePoints *collection)
LILV_API const LilvScalePointlilv_scale_points_get (const LilvScalePoints *collection, LilvIter *i)
LILV_API LilvIterlilv_scale_points_next (const LilvScalePoints *collection, LilvIter *i)
LILV_API bool lilv_scale_points_is_end (const LilvScalePoints *collection, LilvIter *i)
LILV_API void lilv_uis_free (LilvUIs *collection)
LILV_API unsigned lilv_uis_size (const LilvUIs *collection)
LILV_API LilvIterlilv_uis_begin (const LilvUIs *collection)
LILV_API const LilvUIlilv_uis_get (const LilvUIs *collection, LilvIter *i)
LILV_API LilvIterlilv_uis_next (const LilvUIs *collection, LilvIter *i)
LILV_API bool lilv_uis_is_end (const LilvUIs *collection, LilvIter *i)
LILV_API const LilvUIlilv_uis_get_by_uri (const LilvUIs *uis, const LilvNode *uri)
LILV_API void lilv_nodes_free (LilvNodes *collection)
LILV_API unsigned lilv_nodes_size (const LilvNodes *collection)
LILV_API LilvIterlilv_nodes_begin (const LilvNodes *collection)
LILV_API const LilvNodelilv_nodes_get (const LilvNodes *collection, LilvIter *i)
LILV_API LilvIterlilv_nodes_next (const LilvNodes *collection, LilvIter *i)
LILV_API bool lilv_nodes_is_end (const LilvNodes *collection, LilvIter *i)
LILV_API LilvNodelilv_nodes_get_first (const LilvNodes *collection)
LILV_API bool lilv_nodes_contains (const LilvNodes *values, const LilvNode *value)
LILV_API LilvNodeslilv_nodes_merge (const LilvNodes *a, const LilvNodes *b)
LILV_API unsigned lilv_plugins_size (const LilvPlugins *collection)
LILV_API LilvIterlilv_plugins_begin (const LilvPlugins *collection)
LILV_API const LilvPluginlilv_plugins_get (const LilvPlugins *collection, LilvIter *i)
LILV_API LilvIterlilv_plugins_next (const LilvPlugins *collection, LilvIter *i)
LILV_API bool lilv_plugins_is_end (const LilvPlugins *collection, LilvIter *i)
LILV_API const LilvPluginlilv_plugins_get_by_uri (const LilvPlugins *plugins, const LilvNode *uri)

World

The "world" represents all Lilv state, and is used to discover/load/cache LV2 data (plugins, UIs, and extensions). Normal hosts which just need to load plugins by URI should simply use lilv_world_load_all() to discover/load the system's LV2 resources.

#define LILV_OPTION_FILTER_LANG   "http://drobilla.net/ns/lilv#filter-lang"
#define LILV_OPTION_DYN_MANIFEST   "http://drobilla.net/ns/lilv#dyn-manifest"
LILV_API LilvWorldlilv_world_new (void)
LILV_API void lilv_world_set_option (LilvWorld *world, const char *uri, const LilvNode *value)
LILV_API void lilv_world_free (LilvWorld *world)
LILV_API void lilv_world_load_all (LilvWorld *world, const char *lv2_path)
LILV_API void lilv_world_load_bundle (LilvWorld *world, const LilvNode *bundle_uri)
LILV_API void lilv_world_load_specifications (LilvWorld *world)
LILV_API void lilv_world_load_plugin_classes (LilvWorld *world)
LILV_API int lilv_world_unload_bundle (LilvWorld *world, const LilvNode *bundle_uri)
LILV_API int lilv_world_load_resource (LilvWorld *world, const LilvNode *resource)
LILV_API int lilv_world_unload_resource (LilvWorld *world, const LilvNode *resource)
LILV_API const LilvPluginClasslilv_world_get_plugin_class (const LilvWorld *world)
LILV_API const LilvPluginClasseslilv_world_get_plugin_classes (const LilvWorld *world)
LILV_API const LilvPluginslilv_world_get_all_plugins (const LilvWorld *world)
LILV_API LilvNodeslilv_world_find_nodes (LilvWorld *world, const LilvNode *subject, const LilvNode *predicate, const LilvNode *object)
LILV_API LilvNodelilv_world_get (LilvWorld *world, const LilvNode *subject, const LilvNode *predicate, const LilvNode *object)
LILV_API bool lilv_world_ask (LilvWorld *world, const LilvNode *subject, const LilvNode *predicate, const LilvNode *object)
LILV_API LilvNodelilv_world_get_symbol (LilvWorld *world, const LilvNode *subject)

Plugin State

typedef const void *(* LilvGetPortValueFunc) (const char *port_symbol, void *user_data, uint32_t *size, uint32_t *type)
typedef void(* LilvSetPortValueFunc) (const char *port_symbol, void *user_data, const void *value, uint32_t size, uint32_t type)
LILV_API LilvStatelilv_state_new_from_world (LilvWorld *world, const LV2_URID_Map *map, const LilvNode *subject)
LILV_API LilvStatelilv_state_new_from_file (LilvWorld *world, const LV2_URID_Map *map, const LilvNode *subject, const char *path)
LILV_API LilvStatelilv_state_new_from_string (LilvWorld *world, const LV2_URID_Map *map, const char *str)
LILV_API LilvStatelilv_state_new_from_instance (const LilvPlugin *plugin, LilvInstance *instance, LV2_URID_Map *map, const char *file_dir, const char *copy_dir, const char *link_dir, const char *save_dir, LilvGetPortValueFunc get_value, void *user_data, uint32_t flags, const LV2_Feature *const *features)
LILV_API void lilv_state_free (LilvState *state)
LILV_API bool lilv_state_equals (const LilvState *a, const LilvState *b)
LILV_API unsigned lilv_state_get_num_properties (const LilvState *state)
LILV_API const LilvNodelilv_state_get_plugin_uri (const LilvState *state)
LILV_API const LilvNodelilv_state_get_uri (const LilvState *state)
LILV_API const char * lilv_state_get_label (const LilvState *state)
LILV_API void lilv_state_set_label (LilvState *state, const char *label)
LILV_API int lilv_state_set_metadata (LilvState *state, uint32_t key, const void *value, size_t size, uint32_t type, uint32_t flags)
LILV_API void lilv_state_emit_port_values (const LilvState *state, LilvSetPortValueFunc set_value, void *user_data)
LILV_API void lilv_state_restore (const LilvState *state, const LV2_State_Interface *iface, LV2_Handle handle, LilvSetPortValueFunc set_value, void *user_data, uint32_t flags, const LV2_Feature *const *features)
LILV_API int lilv_state_save (LilvWorld *world, LV2_URID_Map *map, LV2_URID_Unmap *unmap, const LilvState *state, const char *uri, const char *dir, const char *filename)
LILV_API char * lilv_state_to_string (LilvWorld *world, LV2_URID_Map *map, LV2_URID_Unmap *unmap, const LilvState *state, const char *uri, const char *base_uri)
LILV_API int lilv_state_delete (LilvWorld *world, const LilvState *state)

Plugin UI

typedef unsigned(* LilvUISupportedFunc) (const char *container_type_uri, const char *ui_type_uri)
LILV_API LilvUIslilv_plugin_get_uis (const LilvPlugin *plugin)
LILV_API const LilvNodelilv_ui_get_uri (const LilvUI *ui)
LILV_API const LilvNodeslilv_ui_get_classes (const LilvUI *ui)
LILV_API bool lilv_ui_is_a (const LilvUI *ui, const LilvNode *class_uri)
LILV_API unsigned lilv_ui_is_supported (const LilvUI *ui, LilvUISupportedFunc supported_func, const LilvNode *container_type, const LilvNode **ui_type)
LILV_API const LilvNodelilv_ui_get_bundle_uri (const LilvUI *ui)
LILV_API const LilvNodelilv_ui_get_binary_uri (const LilvUI *ui)
LILV_API LilvNodelilv_plugin_get_modgui_resources_directory (const LilvPlugin *plugin)
LILV_API LilvNodelilv_plugin_get_modgui_stylesheet (const LilvPlugin *plugin)
LILV_API LilvNodelilv_plugin_get_modgui_icon_template (const LilvPlugin *plugin)
LILV_API LilvNodelilv_plugin_get_modgui_settings_template (const LilvPlugin *plugin)
LILV_API LilvNodelilv_plugin_get_modgui_template_data (const LilvPlugin *plugin)
LILV_API LilvNodelilv_plugin_get_modgui_screenshot (const LilvPlugin *plugin)
LILV_API LilvNodelilv_plugin_get_modgui_thumbnail (const LilvPlugin *plugin)
LILV_API const LilvNodeslilv_ui_get_supported_features (const LilvUI *ui)
LILV_API const LilvNodeslilv_ui_get_required_features (const LilvUI *ui)
LILV_API const LilvNodeslilv_ui_get_optional_features (const LilvUI *ui)
LILV_API const LilvNodeslilv_ui_get_extension_data (const LilvUI *ui)

Detailed Description

API for Lilv, a lightweight LV2 host library.

Macro Definition Documentation

◆ LILV_API

#define LILV_API

◆ LILV_DEPRECATED

#define LILV_DEPRECATED

◆ LILV_NS_DOAP

#define LILV_NS_DOAP   "http://usefulinc.com/ns/doap#"

◆ LILV_NS_FOAF

#define LILV_NS_FOAF   "http://xmlns.com/foaf/0.1/"

◆ LILV_NS_LILV

#define LILV_NS_LILV   "http://drobilla.net/ns/lilv#"

◆ LILV_NS_LV2

#define LILV_NS_LV2   "http://lv2plug.in/ns/lv2core#"

◆ LILV_NS_OWL

#define LILV_NS_OWL   "http://www.w3.org/2002/07/owl#"

◆ LILV_NS_RDF

#define LILV_NS_RDF   "http://www.w3.org/1999/02/22-rdf-syntax-ns#"

◆ LILV_NS_RDFS

#define LILV_NS_RDFS   "http://www.w3.org/2000/01/rdf-schema#"

◆ LILV_NS_XSD

#define LILV_NS_XSD   "http://www.w3.org/2001/XMLSchema#"

◆ LILV_URI_ATOM_PORT

#define LILV_URI_ATOM_PORT   "http://lv2plug.in/ns/ext/atom#AtomPort"

◆ LILV_URI_AUDIO_PORT

#define LILV_URI_AUDIO_PORT   "http://lv2plug.in/ns/lv2core#AudioPort"

◆ LILV_URI_CONTROL_PORT

#define LILV_URI_CONTROL_PORT   "http://lv2plug.in/ns/lv2core#ControlPort"

◆ LILV_URI_CV_PORT

#define LILV_URI_CV_PORT   "http://lv2plug.in/ns/lv2core#CVPort"

◆ LILV_URI_EVENT_PORT

#define LILV_URI_EVENT_PORT   "http://lv2plug.in/ns/ext/event#EventPort"

◆ LILV_URI_INPUT_PORT

#define LILV_URI_INPUT_PORT   "http://lv2plug.in/ns/lv2core#InputPort"

◆ LILV_URI_MIDI_EVENT

#define LILV_URI_MIDI_EVENT   "http://lv2plug.in/ns/ext/midi#MidiEvent"

◆ LILV_URI_OUTPUT_PORT

#define LILV_URI_OUTPUT_PORT   "http://lv2plug.in/ns/lv2core#OutputPort"

◆ LILV_URI_PORT

#define LILV_URI_PORT   "http://lv2plug.in/ns/lv2core#Port"