Re: [ecasound] Midi controller for Ecasound

From: Joel Roth <joelz@email-addr-hidden>
Date: Wed Feb 13 2013 - 13:05:10 EET

On Wed, Feb 13, 2013 at 03:12:03AM -0500, Justin Rosander wrote:
> Hi there,
> not sure if this would be an appropriate channel for this, but I am
> currently writing a midi controller for the purpose of controlling ecasound
> effects in real-time using a GUI. It is working, but I am running into a
> bit of a problem getting ecasound to connect to it automatically without
> using aconnect. I am using Elementary as the widget set from E17 (
> enlightenment.org), and have attached the source code to this email. It
> can be built as follows:
> gcc main.c -o slider -lasound `pkg-config elementary --cflags --libs`
> It currently just sends CC events to channel 1, controller 1.
>
> I am using the following ecasound command:
>
> ecasound -i test.wav -o alsahw -ea:100 -km:1,1,200,1,1
> -Md:alsaseq,midicontroller

Not sure why you need -Md:alsaseq,midicontroller.

If the GUI sends on events on controller 1, channel 1
and -km is set correctly, isn't that all that ecasound needs
to know?

Cheers,

Joel
 
> I am grateful for any thoughts on what I am doing wrong in my code.
>
> Justin

> #include <Elementary.h>
> #include <alsa/asoundlib.h>
>
> 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()
>

> ------------------------------------------------------------------------------
> Free Next-Gen Firewall Hardware Offer
> Buy your Sophos next-gen firewall before the end March 2013
> and get the hardware for free! Learn more.
> http://p.sf.net/sfu/sophos-d2d-feb

> _______________________________________________
> Ecasound-list mailing list
> Ecasound-list@email-addr-hidden
> https://lists.sourceforge.net/lists/listinfo/ecasound-list

-- 
Joel Roth
------------------------------------------------------------------------------
Free Next-Gen Firewall Hardware Offer
Buy your Sophos next-gen firewall before the end March 2013 
and get the hardware for free! Learn more.
http://p.sf.net/sfu/sophos-d2d-feb
_______________________________________________
Ecasound-list mailing list
Ecasound-list@email-addr-hidden
https://lists.sourceforge.net/lists/listinfo/ecasound-list
Received on Wed Feb 13 16:15:02 2013

This archive was generated by hypermail 2.1.8 : Wed Feb 13 2013 - 16:15:02 EET