22 Aug
2016
22 Aug
'16
3:43 p.m.
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