There are now two ways for a plugin to send MIDI controllers to the host: kLegacyMIDICCOutEvent and params/IMidiMapping2. How does the plugin know the host supports the latter?
A plug-in can use the Vst::IPlugInterfaceSupport to check if the host supports Vst::IMidiMapping2. But this doesn’t necessarily mean the host supports it for the output direction I think? Or is the host required to support IMidiMapping2 for the output direction if it supports kLegacyMIDICCOutEvent?
Even before Vst::IMidiMapping2 you could not know if the host will send out the kLegacyMIDICCOutEvents. But yeah, you’re right, it would be nice if a plug-in can get this information.
A plugin would want to support both kLegacyMIDICCOutEvent and params/IMidiMapping2, so it works in as many hosts as possible. And it can’t just use both at the same time because the events would be received twice in hosts that support both options. So it has to choose.
Perhaps a host that supports IMidiMapping2 for input, but not for output, simply shouldn’t report IMidiMapping2 in IPlugInterfaceSupport?