[alsa-devel] [PATCH v5 1/2] amidi: add delay option
Clemens Ladisch
clemens at ladisch.de
Mon Aug 22 14:43:55 CEST 2016
Felipe F. Tonello wrote:
> +.I \-D, \-\-delay=mseconds
> +Adds a delay in between each SysEx message sent to a device.
> + while (data < (send_data + send_data_length)) {
> + int len = send_data + send_data_length - data;
> + char *temp;
> +
> + 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).
> + /* find end of SysEx */
> + if ((temp = memchr(data, 0xf7, len)))
This would be clearer with "!= NULL".
> + len = temp - data + 1;
> +
> + if ((err = snd_rawmidi_write(output, data, len)) < 0) {
> + error("cannot send data: %s", snd_strerror(err));
> + return err;
> + }
> +
> + data += len;
> + }
> }
> }
Regards,
Clemens
More information about the Alsa-devel
mailing list