#include #include static snd_seq_t *seq_handle; static int out_port; void midi_open(void) { snd_seq_open(&seq_handle, "default", SND_SEQ_OPEN_OUTPUT, 0); snd_seq_set_client_name(seq_handle, "midcontroller"); out_port = snd_seq_create_simple_port(seq_handle, "out", SND_SEQ_PORT_CAP_READ|SND_SEQ_PORT_CAP_SUBS_READ, SND_SEQ_PORT_TYPE_APPLICATION); } static void on_done(void *data, Evas_Object *obj, void *event_info) { // quit the mainloop (elm_run function will return) elm_exit(); } static void _changed_cb(void *data, Evas_Object *obj, void *event_info) { double val = elm_slider_value_get(obj); snd_seq_event_t ev; snd_seq_ev_clear(&ev); snd_seq_ev_set_source(&ev, out_port); snd_seq_ev_set_subs(&ev); snd_seq_ev_set_controller(&ev, 1, 1, (int)val); snd_seq_ev_set_direct(&ev); snd_seq_event_output_direct(seq_handle, &ev); snd_seq_drain_output(seq_handle); } EAPI_MAIN int elm_main(int argc, char **argv) { midi_open(); Evas_Object *win, *box, *sl; win = elm_win_util_standard_add("slider", "Slider"); evas_object_smart_callback_add(win, "delete,request", on_done, NULL); box = elm_box_add(win); elm_box_horizontal_set(box, EINA_TRUE); elm_win_resize_object_add(win, box); evas_object_show(box); //add slider sl = elm_slider_add(win); elm_slider_horizontal_set(sl, EINA_FALSE); //set default text elm_object_text_set(sl, "Slide me"); evas_object_size_hint_align_set(sl, EVAS_HINT_FILL, 0.5); evas_object_size_hint_weight_set(sl, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND); //set initial value elm_slider_value_set(sl, 0.0); //span size of slider elm_slider_span_size_set(sl, 200); //show units label elm_slider_unit_format_set(sl, "%1.0f units"); //min and max values elm_slider_min_max_set(sl, 0, 127); //show value on the slider knob elm_slider_indicator_format_set(sl, "%1.0f"); //invert elm_slider_inverted_set(sl, EINA_TRUE); //pack at the end of the box elm_box_pack_end(box, sl); evas_object_show(sl); //callback to function returning value evas_object_smart_callback_add(sl, "changed", _changed_cb, NULL); evas_object_show(win); elm_run(); elm_shutdown(); return 0; } ELM_MAIN()