On Mon, Apr 11, 2011 at 2:01 PM, R. Dresens chromisx@nedlinux.nl wrote:
Hello,
I'm attempting to write a program that lets me record (and play) MIDI sequences,
I have created a sequencer queue (with `snd_seq_alloc_queue`), and when I set it up and let it run I can observe that the tick value properly increases (with `snd_seq_queue_status_get_tick_time`); everything runs fine. Queing events to an output work as well.
But is it somehow possible to bind "incoming events" to this queue as well? (...in such a way that the `event->time.tick` value of these incoming events is used to automatically store the queue timer value at reception? ...)
At this moment, I just sample the tick value manually when I get an event. That kinda works, but chances are high that the kernel sequencer system can do that for me with more accuracy?
I wrote a function that essentially reconnects the inputs of the port used for reception just before the queue is started. This allows me to set the queue explicitly. I also enable `snd_seq_port_subscribe_set_time_update`. It doesnt't work (yet).
Should this work? Am I on the right track? Or am I missing something?
Can anyone give me a hint?
Thanks!
Greetings,
Raymond. _______________________________________________ Alsa-devel mailing list Alsa-devel@alsa-project.org http://mailman.alsa-project.org/mailman/listinfo/alsa-devel
In your function that does the connection to the reception port... snd_seq_port_subscribe_set_queue(subs, queue_id); //<< queue_id being the one you allocated snd_seq_port_subscribe_set_time_update(subs, 1); snd_seq_port_subscribe_set_time_real(subs, 0); snd_seq_subscribe_port(pSeq, subs);
...with the caution that this may be the completely wrong way to go about this, but it may help until someone more knowledgeable comes along...
John