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