[LAD] send midi message

Pedro Lopez-Cabanillas pedro.lopez.cabanillas at gmail.com
Thu Jan 5 20:00:20 UTC 2012


On Thursday 05 January 2012, Dave Stikkolorum wrote:
> On 05-01-12 15:31, Pedro Lopez-Cabanillas wrote:
> > The problem in loop.c is that you are using the function 
snd_seq_ev_set_note()
> > that includes a duration as the 5th parameter. This function will create 
two
> > MIDI events in a queue, the first one will be the noteon event, and the 
second
> > one will be a noteoff event,  scheduled adding the specified duration to 
the
> > start time of the former noteon event. That requires a queue for event
> > scheduling.
> So in fact with a message that contains a duration for a note is always 
> a queue involved?

Yes, but this macro snd_seq_ev_set_note() is the only one that includes a 
duration parameter. It is not really a MIDI message, but the sequencer event 
is converted into two MIDI messages (noteOn + noteOff). There aren't MIDI 
messages containing durations.

OTOH any event using the macros snd_seq_ev_schedule_real() or 
snd_seq_ev_schedule_tick() requires a queue as well, because the message 
delivering time will be scheduled in the future.

Events using the macros snd_seq_ev_set_queue_control(), 
snd_seq_ev_set_queue_start(), snd_seq_ev_set_queue_stop(), 
snd_seq_ev_set_queue_continue() or snd_seq_ev_set_queue_tempo() also require a 
queue, because all these macros have a queue parameter.

Regards,
Pedro



More information about the Linux-audio-dev mailing list