[alsa-devel] [PATCH v5 1/2] amidi: add delay option

Clemens Ladisch clemens at ladisch.de
Tue Aug 23 12:51:10 CEST 2016


Felipe Ferreri Tonello wrote:
> On 23/08/16 11:37, Clemens Ladisch wrote:
>> Felipe Ferreri Tonello wrote:
>>> On 22/08/16 13:43, Clemens Ladisch wrote:
>>>> Felipe F. Tonello wrote:
>>>>> +				if (data > send_data)
>>>>> +					usleep(delay * 1000);
>>>>
>>>> The MIDI data is sent asynchonously, so this delay is not _between_ messages.
>>>> You'd have to add 320 µs for any byte not yet sent (I guess you have to use
>>>> snd_rawmidi_status_get_avail() to find out how many have been sent).
>>>
>>> Right. Or I can just use snd_rawmidi_drain()?
>>
>> This function not only drains the ALSA buffer, but also waits for the
>> hardware FIFO to empty.  And most drivers do not implement this, in
>> which case the framework just does a fixed wait of 50 ms, which would
>> correspond to a FIFO size of 156 bytes.
>
> Ok, so does that mean that it is not safe to use drain()?

That additional 50 ms delay might be safe, but not what you want.


Regards,
Clemens


More information about the Alsa-devel mailing list