diff --git a/plugin/hydrumkit.ttl b/plugin/hydrumkit.ttl index 7cd375cc92eb9be4c2e3312426090a9054f94ead..a63c9abc5734882f468f200b5ab0a21e5efb7d6d 100644 --- a/plugin/hydrumkit.ttl +++ b/plugin/hydrumkit.ttl @@ -117,10 +117,9 @@ lv2:index 8 ; lv2:symbol "hu_latency_regain" ; lv2:name "Humanizer Latency Regain" ; - lv2:default 0.0 ; + lv2:default 1.0 ; lv2:minimum 0.0 ; - lv2:maximum 100.0 ; - units:unit units:ms ; + lv2:maximum 1.0 ; ] , [ a lv2:InputPort , lv2:ControlPort ; diff --git a/plugin/plugin.c b/plugin/plugin.c index 0437c5c5207541f1a50e965761e03852decf7caa..1723695460ec47ff7c242df8798714c8dd26ea9e 100644 --- a/plugin/plugin.c +++ b/plugin/plugin.c @@ -278,6 +278,7 @@ static void run(LV2_Handle instance, uint32_t sample_count) { if (plugin->send_settings_to_ui) { plugin->send_settings_to_ui = 0; +#if 0 // Forge container object of type 'ui_state' LV2_Atom_Forge_Frame frame; lv2_atom_forge_frame_time(&plugin->forge, 0); @@ -295,6 +296,7 @@ static void run(LV2_Handle instance, uint32_t sample_count) { lv2_atom_forge_key(&plugin->forge, plugin->uris.ui_hu_velocity_stddev); lv2_atom_forge_float(&plugin->forge, plugin->hsettings.velocity_stddev); lv2_atom_forge_pop(&plugin->forge, &frame); +#endif } // Incrementally process control events and render audio data. diff --git a/plugin/ui.c b/plugin/ui.c index 2e21b6ac6abd596babdaa12b6e9520634fab36ff..9cf9f7cd7cda0f5f46d1b37b0d4566dc4845f5ee 100644 --- a/plugin/ui.c +++ b/plugin/ui.c @@ -111,17 +111,17 @@ static void on_load_dialog_response(GtkDialog *widget, gint response, void *hand }; } -#define WRITECONTROLVALUE(var, port) \ - val = ui->humanize_enabled ? ui-> var : 0; \ +#define WRITECONTROLVALUE(expr, port) \ + val = ui->humanize_enabled ? expr : 0; \ ui->write(ui->controller, port, sizeof(float), 0, (const void *)&val) static void write_control_values(struct plugin_ui *ui) { float val; - WRITECONTROLVALUE(humanize_latency_max_value, PORT_HUMANIZE_LATENCY_MAX); - WRITECONTROLVALUE(humanize_latency_stddev_value, PORT_HUMANIZE_LATENCY_STDDEV); - WRITECONTROLVALUE(humanize_latency_laid_back_value, PORT_HUMANIZE_LATENCY_LAID_BACK); - WRITECONTROLVALUE(humanize_latency_regain_value, PORT_HUMANIZE_LATENCY_REGAIN); - WRITECONTROLVALUE(humanize_velocity_stddev_value, PORT_HUMANIZE_VELOCITY_STDDEV); + WRITECONTROLVALUE(ui->humanize_latency_max_value * 400.0, PORT_HUMANIZE_LATENCY_MAX); + WRITECONTROLVALUE(ui->humanize_latency_stddev_value * 100.0, PORT_HUMANIZE_LATENCY_STDDEV); + WRITECONTROLVALUE(ui->humanize_latency_laid_back_value* 100.0, PORT_HUMANIZE_LATENCY_LAID_BACK); + WRITECONTROLVALUE(ui->humanize_latency_regain_value, PORT_HUMANIZE_LATENCY_REGAIN); + WRITECONTROLVALUE(ui->humanize_velocity_stddev_value, PORT_HUMANIZE_VELOCITY_STDDEV); } static void on_humanize_button_click(GtkButton *widget, void *handle) { @@ -283,6 +283,7 @@ static void cleanup(LV2UI_Handle handle) { } static int recv_ui_state(struct plugin_ui *ui, const LV2_Atom_Object *obj) { +#if 0 const LV2_Atom *hu_latency_max_val = NULL; const LV2_Atom *hu_latency_stddev_val = NULL; const LV2_Atom *hu_latency_laidback_val = NULL; @@ -307,9 +308,9 @@ static int recv_ui_state(struct plugin_ui *ui, const LV2_Atom_Object *obj) { } // Get the values we need from the body of the property value atoms. - ui->humanize_latency_max_value = ((const LV2_Atom_Float *)hu_latency_max_val)->body; - ui->humanize_latency_stddev_value = ((const LV2_Atom_Float *)hu_latency_stddev_val)->body; - ui->humanize_latency_laid_back_value = ((const LV2_Atom_Float *)hu_latency_laidback_val)->body; + ui->humanize_latency_max_value = 400 * ((const LV2_Atom_Float *)hu_latency_max_val)->body; + ui->humanize_latency_stddev_value = 100 * ((const LV2_Atom_Float *)hu_latency_stddev_val)->body; + ui->humanize_latency_laid_back_value = 100 * ((const LV2_Atom_Float *)hu_latency_laidback_val)->body; ui->humanize_latency_regain_value = ((const LV2_Atom_Float *)hu_latency_regain_val)->body; ui->humanize_velocity_stddev_value = ((const LV2_Atom_Float *)hu_velocity_stddev_val)->body; @@ -326,6 +327,7 @@ static int recv_ui_state(struct plugin_ui *ui, const LV2_Atom_Object *obj) { gtk_widget_queue_draw(ui->humanize_latency_laid_back_knob); gtk_widget_queue_draw(ui->humanize_latency_regain_knob); gtk_widget_queue_draw(ui->humanize_velocity_stddev_knob); +#endif return 1; } @@ -351,7 +353,7 @@ static void port_event(LV2UI_Handle handle, uint32_t port_index, const void *buffer) { struct plugin_ui *ui = (struct plugin_ui *)handle; - if (format == ui->uris.atom_eventTransfer) { + if (format == ui->uris.atom_eventTransfer && port_index == PORT_NOTIFY) { const LV2_Atom *atom = (const LV2_Atom *)buffer; if (lv2_atom_forge_is_object_type(&ui->forge, atom->type)) { const LV2_Atom_Object *obj = (const LV2_Atom_Object *)atom; @@ -376,6 +378,26 @@ static void port_event(LV2UI_Handle handle, uint32_t port_index, } else { lv2_log_error(&ui->logger, "Unknown message type\n"); } + } else if (port_index == PORT_HUMANIZE_LATENCY_MAX) { + float val = *(float *)buffer; + ui->humanize_latency_max_value = val / 400.0; + gtk_widget_queue_draw(ui->humanize_latency_max_knob); + } else if (port_index == PORT_HUMANIZE_LATENCY_STDDEV) { + float val = *(float *)buffer; + ui->humanize_latency_stddev_value = val / 100.0; + gtk_widget_queue_draw(ui->humanize_latency_stddev_knob); + } else if (port_index == PORT_HUMANIZE_LATENCY_LAID_BACK) { + float val = *(float *)buffer; + ui->humanize_latency_laid_back_value = val / 100.0; + gtk_widget_queue_draw(ui->humanize_latency_laid_back_knob); + } else if (port_index == PORT_HUMANIZE_LATENCY_REGAIN) { + float val = *(float *)buffer; + ui->humanize_latency_max_value = val; + gtk_widget_queue_draw(ui->humanize_latency_max_knob); + } else if (port_index == PORT_HUMANIZE_VELOCITY_STDDEV) { + float val = *(float *)buffer; + ui->humanize_velocity_stddev_value = val; + gtk_widget_queue_draw(ui->humanize_velocity_stddev_knob); } else { lv2_log_warning(&ui->logger, "Unknown port event format\n"); }