MidiFX VST development to make MPE work better?

I would like to develop an MPE focused MIDIfx VST plugin to provide some utility functions that I feel are needed. I’ve been doing a lot of this work already in Bitwig with modulators, but there are some functions that simply cannot be implemented in this way. I feel like we might get some of what we need when we get the MIDI Grid… and hopefully the Modulator-Grid and Notefx-Grid devices in BW, but a more general solution, implemented outside of that environment feels useful.

Blue Cat’s Plug n’ Script seems like it might be a useful platform for this work. You can write MIDI VST plugins that can be exported as standalone and shared with people that don’t have the development software, which is itself only $99. It uses AngleScript, which is close enough to Javascript that I think I can code with it. I would like feedback from this board as to better alternatives.

Here’s what I wish to implement:

This plugin would be placed between the MPE controller and the MPE synth, It is a mediator — takes an MPE stream in and sends an MPE stream out. This allows it to modify the MPE control stream in various ways. The plugin would be grouped with the synth plugin when saved… allowing these configurations to be part of the patch or snapshot. This would allow the user to improve the MPE implementation of synths (which have inconsistent and often shallow MPE implementations.)

  1. Attack and Decay lag processors for pressure. As a ROLI user this is my most desired function. I would like to have the ability to dial in the right lag for the pressure control, which is jittery. I need smoother operation and the various plugins that support MPE generally don’t have this. Audiodamage ones do and it works really well.

  2. The ability to implement a MIDI-based envelope for release. I would like to be able to do the following:

  • press note -> note on event
  • modulate pressure -> pressure cc messages flow
  • release key -> process a release where pressure cc falls according to an envelope pattern AND THEN, when it hits zero issues the note-off
  1. random modulator of parameters. Taking inspiration from the Random modulator in Massive, I would like to be able to generate a random value 0-127 on every note-on event that can be used to modulate pitch, velocity, pressure, etc. For instance: I have configured random to modulate pitch by 2%. Each time I press a key the pitch of that note (modulated via MPE pitchbend) is altered by the random value generated on key-down * .2 * actual pitch.

  2. host automation -> value mod. The plugin will have several host automation targets (knobs) that can be modulated by the host (in Bitwig via modulators) or by external controls. These will be in a mod-matrix internal to the plugin and would be able to modulate the MPE controller valunes. Use case: external LFO -> MPE MIDI plugin -> internally this host automation control is mapped to modify pressure, making a tremolo effect.

What do you folks think?


Brilliant and useful idea.

I’ve noticed that a common request among Roli Seaboard users (myself included) is for a synth-independent implementation of something like the 5d curves built into Roli’s own soft synths. (To make it possible to customize each gesture’s response in the desired way with MPE synths that don’t provide this kind of control over response curves.) Would that be something you’d consider including?


Joined the forum (officially) to say that this is an excellent idea! I think it would make MPE controllers a lot more useful and compelling to use.

Also… perhaps something like this should be built into the upcoming Expressive E Osmose?

I am stalled on this. Blue Cat’s Plug n’ script is seemingly not a good platform for this work and I’m unable to make the time commitment to learning JUICE or something more low level at this time. If I were using Logic it would be possible to do this in javascript… anyone know of a platform that I could use for midifx development that uses a higher level language?

Not sure if it helps, but I believe that Bitwig Studio uses Java for coding control scripts and extensions. My apologies if this is way off the mark. I haven’t used Logic and don’t know about how it uses Java or why.