diff --git a/plugin/hydrumkit.ttl b/plugin/hydrumkit.ttl index bebb167daf876bf8fb47c5d7a0e110615d517d55..66ae06989c23a95d68a35cb3aa3abcb47dad51c3 100644 --- a/plugin/hydrumkit.ttl +++ b/plugin/hydrumkit.ttl @@ -89,7 +89,7 @@ lv2:name "Humanizer Latency Max" ; lv2:default 0.0 ; lv2:minimum 0.0 ; - lv2:maximum 400.0 ; + lv2:maximum 100.0 ; units:unit units:ms ; ] , [ a lv2:InputPort , @@ -99,7 +99,7 @@ lv2:name "Humanizer Latency StdDev" ; lv2:default 0.0 ; lv2:minimum 0.0 ; - lv2:maximum 100.0 ; + lv2:maximum 20.0 ; units:unit units:ms ; ] , [ a lv2:InputPort , @@ -128,7 +128,7 @@ lv2:name "Humanizer Velocity StdDev" ; lv2:default 0.0 ; lv2:minimum 0.0 ; - lv2:maximum 1.0 ; + lv2:maximum 0.3 ; ] , [ a lv2:InputPort , lv2:ControlPort ; diff --git a/plugin/ui.c b/plugin/ui.c index 9b072be04ccf90acd9edcb3b4ff5be7620163f3a..ee369dcce4eeebd63e820ba7f2ef745934f5151b 100644 --- a/plugin/ui.c +++ b/plugin/ui.c @@ -46,6 +46,8 @@ struct plugin_ui { GtkWidget *load_dialog; GtkWidget *button_box; GtkWidget *box; + GtkWidget *frame; + GtkWidget *humanize_frame; GtkWidget *humanize_box; GtkWidget *humanize_button; GtkWidget *humanize_latency_max_knob; @@ -117,11 +119,12 @@ static void on_load_dialog_response(GtkDialog *widget, gint response, void *hand } static void write_control_values(struct plugin_ui *ui) { - 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); + // Values here should match the ranges specified in hydrumkit.ttl. + WRITECONTROLVALUE(ui->humanize_latency_max_value * 100.0, PORT_HUMANIZE_LATENCY_MAX); + WRITECONTROLVALUE(ui->humanize_latency_stddev_value * 20.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); + WRITECONTROLVALUE(ui->humanize_velocity_stddev_value * 0.3, PORT_HUMANIZE_VELOCITY_STDDEV); } static void on_humanize_button_click(GtkButton *widget, void *handle) { @@ -180,8 +183,10 @@ static LV2UI_Handle instantiate(const LV2UI_Descriptor *descriptor, // Construct Gtk UI ui->box = gtk_grid_new(); gtk_orientable_set_orientation(GTK_ORIENTABLE(ui->box), GTK_ORIENTATION_VERTICAL); + ui->frame = gtk_frame_new("Drumkit"); ui->label = gtk_label_new("No drumkit loaded."); ui->button_box = gtk_grid_new(); + ui->humanize_frame = gtk_frame_new("Humanizer"); ui->humanize_box = gtk_grid_new(); // Create the file chooser (we use a custom GtkButton instead of the @@ -218,7 +223,7 @@ static LV2UI_Handle instantiate(const LV2UI_Descriptor *descriptor, } // Create the humanizer controls. - ui->humanize_button = gtk_check_button_new_with_label("Humanize"); + ui->humanize_button = gtk_check_button_new_with_label("Enable"); ui->humanize_latency_max_knob = knob_widget_new(&ui->humanize_latency_max_value, KNOB_SIZE, 0); ui->humanize_latency_stddev_knob = knob_widget_new(&ui->humanize_latency_stddev_value, KNOB_SIZE, 0); ui->humanize_latency_laid_back_knob = knob_widget_new(&ui->humanize_latency_laid_back_value, KNOB_SIZE, 0); @@ -238,14 +243,16 @@ static LV2UI_Handle instantiate(const LV2UI_Descriptor *descriptor, gtk_widget_set_halign(ui->label, GTK_ALIGN_CENTER); gtk_container_add(GTK_CONTAINER(ui->button_box), ui->load_button); gtk_widget_set_hexpand(ui->load_button, FALSE); - gtk_container_add(GTK_CONTAINER(ui->box), ui->button_box); + gtk_container_add(GTK_CONTAINER(ui->frame), ui->button_box); + gtk_container_add(GTK_CONTAINER(ui->box), ui->frame); gtk_container_add(GTK_CONTAINER(ui->humanize_box), ui->humanize_button); gtk_container_add(GTK_CONTAINER(ui->humanize_box), ui->humanize_latency_max_knob); gtk_container_add(GTK_CONTAINER(ui->humanize_box), ui->humanize_latency_stddev_knob); gtk_container_add(GTK_CONTAINER(ui->humanize_box), ui->humanize_latency_laid_back_knob); gtk_container_add(GTK_CONTAINER(ui->humanize_box), ui->humanize_latency_regain_knob); gtk_container_add(GTK_CONTAINER(ui->humanize_box), ui->humanize_velocity_stddev_knob); - gtk_container_add(GTK_CONTAINER(ui->box), ui->humanize_box); + gtk_container_add(GTK_CONTAINER(ui->humanize_frame), ui->humanize_box); + gtk_container_add(GTK_CONTAINER(ui->box), ui->humanize_frame); g_signal_connect(ui->load_dialog, "response", G_CALLBACK(on_load_dialog_response), ui); @@ -270,6 +277,7 @@ static void cleanup(LV2UI_Handle handle) { gtk_widget_destroy(ui->load_dialog); gtk_widget_destroy(ui->load_button); gtk_widget_destroy(ui->button_box); + gtk_widget_destroy(ui->frame); gtk_widget_destroy(ui->humanize_button); gtk_widget_destroy(ui->humanize_latency_max_knob); gtk_widget_destroy(ui->humanize_latency_stddev_knob); @@ -277,6 +285,7 @@ static void cleanup(LV2UI_Handle handle) { gtk_widget_destroy(ui->humanize_latency_regain_knob); gtk_widget_destroy(ui->humanize_velocity_stddev_knob); gtk_widget_destroy(ui->humanize_box); + gtk_widget_destroy(ui->humanize_frame); gtk_widget_destroy(ui->box); free(ui);