I currently have the following hardware-software set-up - A USB MIDI device which sends SysEx messages to my JUCE-made software, and then depending on settings applied within the software and the received SysEx messages, MIDI note-on, note-off, and CC messages are sent back to the device (which is MIDI Thru) so that these messages can then be sent to any other MIDI software. I do realise that this is a weird setup (especially as any MIDI being sent out of the software will end up coming back in!) - eventually the hardware will be able to create all it’s own MIDI messages, however for now I just wanted to test that the SysEx messages were being sent and decoded correctly.
My problem is this - SysEx messages are being received fine however when I try and send MIDI messages back to the device to be transmitted elsewhere the software seems to just disconnect from the MIDI input (so I cannot receive the SySex messages), however MIDI can still be sent out to the device and transmitted to other software. If I just send note on and off messages fairly slowly everything works OK, and also it seems to work fine on Linux, but not Windows or OSX. Within handleIncomingMidiMessage() I’m only responding to SysEx messages - anything else (e.g. the messages being sent out and then consequently back in) is simply ignored. Also once the MIDI input crashes, if I click on the MIDI input selector within the AudioDeviceSelectorComponent the whole software just freezes.
Why is this? Is it due to the fact that there is just too much MIDI activity going on which causes the MIDI input to crash? Is this something handled within Juce or within the actual MIDI protocol?