I was wondering about how the pre-definition of the SysEx STREAM_MAX_SIZE variable (as 128) in mnbg_event.c came about.
The reason I am asking is that I have recurring problem with
[MIOS32\_MIDI\_Receive\_Handler] Timeout on port 0x21
which, as I have found in other posts, means that there is an overflow on MIDI In 2. In my setup this is the “return” port of a hardware synthesizer, that I am controlling with control elements on another MIDI hardware device (bidirectionally connected on MIDI In/Out 1). While switching through various editing modi on device 2 it always sends a SysEx dump of the parameter values currently set in the selected program/patch. I am reading these values with syxdump_pos=x:y, syxdump_pos=x:y+1, …, syxdump_pos=x:y+n and assigning them each to a control element on device 1. This setup shows me that the SysEx dumps is (always) cut off at syxdump_pos:x:52.
This confuses me, as I can not explain why an overflow, and a subsequent disposal of further incoming bytes, happens so early, since the MAX_SIZE is set to 128… Of course there are probably some additional messages being transferred (like Ack messages for the successfully received dump request etc.), but still this does not make much sense to me.
I tried to cope with this by increasing the STREAM_MAX_SIZE in mbng_event.c to 256. Same result , though. I can’t come up with any other to deal with this I must honestly say. Has anyone else experienced similar problems when handling the transfer of SysEx parameter dumps? I’d love to hear your thoughts about this.
Greetings,
Micha