diff options
author | David Robillard <d@drobilla.net> | 2007-02-07 01:45:53 +0000 |
---|---|---|
committer | David Robillard <d@drobilla.net> | 2007-02-07 01:45:53 +0000 |
commit | 17ec1c5594772a89a5284449754b56ccb705ebe4 (patch) | |
tree | d3ee843acc698345b3760818b1a09f55a18517bb /hosts | |
parent | 87e016baff11bd74d905b68e48577461b36b992c (diff) | |
download | lilv-17ec1c5594772a89a5284449754b56ccb705ebe4.tar.gz lilv-17ec1c5594772a89a5284449754b56ccb705ebe4.tar.bz2 lilv-17ec1c5594772a89a5284449754b56ccb705ebe4.zip |
Added lv2.ttl installation, lv2.ttl added as source by default to queries.
Changed port API to work by referring to either index or symbol.
Plugged some leaks.
Added access to plugin/port hints/properties.
Updated lv2.ttl.
git-svn-id: http://svn.drobilla.net/lad/slv2@285 a436a847-0d15-0410-975c-d299462d15a1
Diffstat (limited to 'hosts')
-rw-r--r-- | hosts/lv2_jack_host.c | 15 | ||||
-rw-r--r-- | hosts/lv2_simple_jack_host.c | 30 |
2 files changed, 29 insertions, 16 deletions
diff --git a/hosts/lv2_jack_host.c b/hosts/lv2_jack_host.c index e5e51a3..03d57d9 100644 --- a/hosts/lv2_jack_host.c +++ b/hosts/lv2_jack_host.c @@ -35,6 +35,7 @@ struct Port { enum Direction { INPUT, OUTPUT} direction; enum Type { UNKNOWN, FLOAT, MIDI } type; + SLV2PortID id; jack_port_t* jack_port; /**< For audio and MIDI ports, otherwise NULL */ float control; /**< For control ports, otherwise 0.0f */ LV2_MIDI* midi_buffer; /**< For midi ports, otherwise NULL */ @@ -65,6 +66,8 @@ main(int argc, char** argv) host.num_ports = 0; host.ports = NULL; + slv2_init(); + /* Find all installed plugins */ SLV2List plugins = slv2_list_new(); slv2_list_load_all(plugins); @@ -143,6 +146,8 @@ main(int argc, char** argv) } jack_client_close(host.jack_client); + slv2_finish(); + return 0; } @@ -170,6 +175,7 @@ create_port(struct JackHost* host, //struct Port* port = (Port*)malloc(sizeof(Port)); struct Port* const port = &host->ports[port_index]; + port->id = slv2_port_by_index(port_index); port->type = UNKNOWN; port->jack_port = NULL; port->control = 0.0f; @@ -177,17 +183,18 @@ create_port(struct JackHost* host, slv2_instance_connect_port(host->instance, port_index, NULL); - char* type_str = slv2_port_get_data_type(host->plugin, port_index); + char* type_str = slv2_port_get_data_type(host->plugin, port->id); + if (!strcmp(type_str, SLV2_DATA_TYPE_FLOAT)) port->type = FLOAT; else if (!strcmp(type_str, SLV2_DATA_TYPE_MIDI)) port->type = MIDI; /* Get the port symbol (label) for console printing */ - char* symbol = slv2_port_get_symbol(host->plugin, port_index); + char* symbol = slv2_port_get_symbol(host->plugin, port->id); /* Get the 'class' (not data type) of the port (control input, audio output, etc) */ - enum SLV2PortClass class = slv2_port_get_class(host->plugin, port_index); + enum SLV2PortClass class = slv2_port_get_class(host->plugin, port->id); if (port->type == FLOAT) { @@ -195,7 +202,7 @@ create_port(struct JackHost* host, switch (class) { case SLV2_CONTROL_RATE_INPUT: port->direction = INPUT; - port->control = slv2_port_get_default_value(host->plugin, port_index); + port->control = slv2_port_get_default_value(host->plugin, port->id); slv2_instance_connect_port(host->instance, port_index, &port->control); printf("Set %s to %f\n", symbol, host->ports[port_index].control); break; diff --git a/hosts/lv2_simple_jack_host.c b/hosts/lv2_simple_jack_host.c index 4b7493f..ef386b7 100644 --- a/hosts/lv2_simple_jack_host.c +++ b/hosts/lv2_simple_jack_host.c @@ -49,6 +49,8 @@ main(int argc, char** argv) host.jack_ports = NULL; host.controls = NULL; + slv2_init(); + /* Find all installed plugins */ SLV2List plugins = slv2_list_new(); slv2_list_load_all(plugins); @@ -125,6 +127,8 @@ main(int argc, char** argv) } jack_client_close(host.jack_client); + slv2_finish(); + return 0; } @@ -147,40 +151,42 @@ die(const char* msg) */ void create_port(struct JackHost* host, - uint32_t port_index) + uint32_t index) { + SLV2PortID id = slv2_port_by_index(index); + /* Make sure this is a float port */ - char* type = slv2_port_get_data_type(host->plugin, port_index); + char* type = slv2_port_get_data_type(host->plugin, id); if (strcmp(type, SLV2_DATA_TYPE_FLOAT)) die("Unrecognized data type, aborting."); free(type); /* Get the port symbol (label) for console printing */ - char* symbol = slv2_port_get_symbol(host->plugin, port_index); + char* symbol = slv2_port_get_symbol(host->plugin, id); /* Initialize the port array elements */ - host->jack_ports[port_index] = NULL; - host->controls[port_index] = 0.0f; + host->jack_ports[index] = NULL; + host->controls[index] = 0.0f; /* Get the 'class' of the port (control input, audio output, etc) */ - enum SLV2PortClass class = slv2_port_get_class(host->plugin, port_index); + enum SLV2PortClass class = slv2_port_get_class(host->plugin, id); /* Connect the port based on it's 'class' */ switch (class) { case SLV2_CONTROL_RATE_INPUT: - host->controls[port_index] = slv2_port_get_default_value(host->plugin, port_index); - slv2_instance_connect_port(host->instance, port_index, &host->controls[port_index]); - printf("Set %s to %f\n", symbol, host->controls[port_index]); + host->controls[index] = slv2_port_get_default_value(host->plugin, id); + slv2_instance_connect_port(host->instance, index, &host->controls[index]); + printf("Set %s to %f\n", symbol, host->controls[index]); break; case SLV2_CONTROL_RATE_OUTPUT: - slv2_instance_connect_port(host->instance, port_index, &host->controls[port_index]); + slv2_instance_connect_port(host->instance, index, &host->controls[index]); break; case SLV2_AUDIO_RATE_INPUT: - host->jack_ports[port_index] = jack_port_register(host->jack_client, + host->jack_ports[index] = jack_port_register(host->jack_client, symbol, JACK_DEFAULT_AUDIO_TYPE, JackPortIsInput, 0); break; case SLV2_AUDIO_RATE_OUTPUT: - host->jack_ports[port_index] = jack_port_register(host->jack_client, + host->jack_ports[index] = jack_port_register(host->jack_client, symbol, JACK_DEFAULT_AUDIO_TYPE, JackPortIsOutput, 0); break; default: |