I cannot get MPE to work fine with the VST3 plugin format.
There are no problems with MPE when using AU or VST2.
I have implemented the AudioProcessor::supportsMPE method to return true.
We have our own host for testing our plugin but when I send MPE pressure (midi description = “channel pressure”) this is received in the plugin as “aftertouch”. AU and VST2 works fine with our own host.
When I test this with Tracktion 7.2.1, the channel pressure message is filtered by tracktion, and so is the timbre MPE message. No problems here with AU, didn’t try VST2 yet.
It might be a problem with our host, but I don’t have any problems with AU or VST2.
However, I am still looking for a good host to test MPE ;).
We still haven’t found any solution.
Unfortunately, we don’t have a VST2 license so we really need clarification about this soon for a plugin we would like to release.
Thanks David, I tried Waveform 9 but without success.
MPE pressure still comes into our plugin as aftertouch. So that doesn’t work because the MPEInstrument::processNextMidiEvent handles only channel pressure. In waveform, the midi clip “MIDI Channel Mode” is set to MPE.
We use the latest JUCE modules and projucer 5.4.1.
Maybe it matters that we disabled JUCE_VST3_CAN_REPLACE_VST2, because we couldn’t compile when enabling it (some VST2 stuff was missing).
Are you sure?
How are you adding the MPE note and expression data? By hand or using a Seaboard etc?
MPE data should get recorded to “Note Expression”, there’s a setting for this on the MIDI input device. These are tied to individual notes and can be changed via the floating editor.
I’ve double checked the code for this and there’s nothing that is creating aftertouch messages unless you specifically add them to the MIDI list. Maybe you’re using a controller that’s creating them?
Because it works fine with AU, I am sure that I send correct data.
In juce_VST3Common.h in toMidiBuffer in case Steinberg::Vst::Event::kPolyPressureEvent:
if I change this: result.addEvent (MidiMessage::aftertouchChange
to result.addEvent (MidiMessage::channelPressureChange
Investigating this is near the top of our backlog.
Apologies for the delay - I attempted to avoid most of the UK winter by holidaying in a different hemisphere for 5 weeks and am still catching up with JUCE issues.
Any further progress on MPE and VST3? This is really mission critical to my project (=start-up business). We have our beta testers waiting for this fix and start to loose momentum and credibility… So, pleassssseeee increase the priority on this fix because it is a real showstopper…thx