JUCE VST3 Sysex output does not work in 3rd party hosts. JUCE strips out the header and footer Sysex bytes. Because of this, Sysex output from VST3 plugin does not work in most hosts including Cubase 12 and Reaper. So far the only reported host where it works is the JUCE host itself.
Reproduce the problem with Steinberg Cubase 12:
Disabled the SySex MIDI Filter in the Cubase settings
Create an Instrument Channel with the VST3 that outputs Sysex from the process block
Create a MIDI Channel in Cubase
The MIDI Channel receives the Instrument Plugin MIDI output
Enabled MIDI Channel Monitoring to forward the MIDI message
Record the Sysex MIDI in the MIDI Channel
→ The recorded MIDI is empty because Cubase ignores the Sysex data because of the missing header and footer bytes
It can also be tested in Reaper in a similar way.
Sending the raw MIDI data, including the header and footer bytes, fixes the problem (juce_VST3Common.h) :
I’m not sure what happens here. This doesn’t look right. I also have to process incoming Sysex messages in the next few days. We will see how this goes. So far my report is only about sending Sysex with VST3. VST2 seems to work as expected. Didn’t test AU.
At least there is a workaround for this while we have to modify the JUCE wrapper code to make sending Sysex with VST3 work.