[LV2] should plugins somehow indicate whether they support MPE?

Stefan Westerfeld stefan at space.twc.de
Wed Jun 28 05:51:43 PDT 2017


   Hi!

On Sun, Jun 25, 2017 at 05:04:23PM +0300, Henna Haahti wrote:
> 2017-06-21 17:18 GMT+03:00 Hanspeter Portner <dev at open-music-kontrollers.ch>:
> > I was just thinking out loud whether there is a host-side-only way of handling
> > expressive polyphony which would be backwards-compatible with a lot of existing
> > MIDI synth plugins out there.
> >
> > I'm just being realistic here. New extensions are generally picked up very
> > slowly by plugin/host authors. A new extension also makes it harder to port
> > existing MIDI-based synths to LV2, etc.
> 
> could this be a good candidate for such an extension?
> I designed it in 2015 but never got around to publishing it.
> Reading this thread I realized it might be a good idea to do it now.
> Please let me know what you think! :3
> 
> It is backwards-compatible with MIDI, by using the combination
> of channel and note number as the identifier for a note, allowing
> for 2048-part polyphony. This extension defines a way to send
> additional parameters for those notes using atom objects.
> 
> https://github.com/grejppi/expr.lv2

Ok, I looked at it, and I may not understand all implications of the design, so
it probably needs to be reviewed by others, but this looks like a good way to
do expression in LV2 for me. Unlike MPE, it doesn't have the polyphony limit.

Another nice feature is than synthesizer can add descriptions of which
expressions exactly it supports.

With the predefined expr:tuning, I could make per-note pitchbend work properly
in the SpectMorph LV2 plugin, with better polyphony than MPE. And as far as I
understand it, I can also add custom expressions (like for instance a morphing
expression, which may not be meaningful for other synths), within SpectMorph
by defining these in my own ttl. And sequencers could know what parameters
I have, and what ranges are allowed.

So yes, I like it, and it looks like a good idea to me.

One question: it should work with expressions which are timestamped and
should be processed at a specific sample timestamp, in the middle of
rendering a block?

   Cu... Stefan
-- 
Stefan Westerfeld, http://space.twc.de/~stefan


More information about the Devel mailing list