iPlug2 Forum

IMidiMsg::kPitchWheel not sent to OnMidiMsgUI?


I’m trying to map my IControl to incoming kPitchWheel events and implemented OnMidiMsgUI to check for incoming events. While noteOn / noteOff messages seem to work, kPitchWheel messages do not seem to be send to the UI. On the processor side, they are send correctly to ProcessMidiMsg. Could this be a bug or am I missing something? The plugin is build as VST3 OSX.

void IPlugEffect::OnMidiMsgUI(const IMidiMsg& msg) {
    int status = msg.StatusMsg();

    DBGMSG("OnMidiMsgUI @ %i \n", status);

    switch (status) {
        case IMidiMsg::kPitchWheel:
            // update IControl


Ciao PJ
I’m not professional programmer and sorry for my english,
but I had same problem.

What I understand by looking around in the forums is that the VST3 standard - for STUPID reason arrive at MIDIOUT - has been limited. In practice, only the NOTE-ON / OFF and some others (I checked the NRPN, strangely also the CC11 goes into my project… it working good in VST2).

I recommend this post:

The reason that many audio programmers have not joined VST3 for many years and STEINBERG’s recent decision to inhibit the distribution of VST2 makes it clear how completely this company has moved away from MUSICIANS (I am a professional and live in concerts and I know what am I talking about) and they has come to its “creative death”.

In my opinion - seeing their latest software productions - I noticed how much they tend to favor their choices by imposing them on musicians (for example the instrumental “articulations”, the audio tracks connected to a single instrument, the clumsiness of the interfaces, etc … ).

They do not realize, however, that they have directed their focus to AMATEURS.
A professional musician never looks for
but looks for “personalizations”
and they dont like “limits”.

At the end a starting point for reflection (sorry for long post)…
Can a KEYBOARDS PLAYER program a drum track in “artistically” way?
No!. He pay for drummer if want a professional drums track.
Only amateurs do these things…
but STEINBERG still doesn’t understand it.

1 Like

VST3 makes the wacky decision to split up the MIDI stream and CCs and Pitch bend work as plugin parameters.

Nevertheless you have discovered a bug in iPlug2, which i can fix. Need to modify IPlugVST3ProcessorBase::ProcessParameterChanges() to push MIDI parameters into IPlugAPIBase::mMidiMsgsFromProcessor queue.

BTW, you can also make an IControl directly respond to MIDI messages with IControl::SetWantsMidi(true), then handle in IControl::OnMidi()


Yeah, the VST3 SDK is full of surprises. :wink: I decided to abandon my VST3 SDK projects and port them to iPlug2. It’s just overly complicated and has some bad design choices.

I was just checking out IControl::OnMidi(). Nice to have this option. It seem to suffer from the same bug btw.

should be fixed if you git pull

1 Like

Thanks! You’re fast!

Thanks Oli for answer

Faced the same problem in vst3. Plugin can not send CCs, PC and PB. Note on/off works fine. I new in iplug2 and starting with examples. Please can anybody give an simple example how to send CCs and ets. from plugin parametrs and passthrough in vst3.I would be very grateful!