[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