diff options
Diffstat (limited to 'hosts/lv2_simple_jack_host.c')
-rw-r--r-- | hosts/lv2_simple_jack_host.c | 30 |
1 files changed, 18 insertions, 12 deletions
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: |