22 Aug
2016
22 Aug
'16
2: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