MPE and Roundrobin

So I noticed, if there is MPE information that isn’t reset to it’s natural pitch before the end of the note, after a few midi notes, the MPE information will be messed up on another note.
I realize this isn’t super clear so I made a video about it: https://www.youtube.com/watch?v=b1fCavFhK70
The first example is Ableton stock Wavetable and the second is Vital. I suspect it has to do with the voice round robin that catches up after some iterations and reuse the value of that first note? I do not have other MPE enabled VST to allow me to test if it is an issue with Ableton 11 or with Vital, but I thought I’d threw it here.
Don’t hesitate if you need more info, although I think it is easily reproducable.

2 Likes

Have you try in another Daw?
Bitwig in demo mode is fully functional, but you can’t save or Reaper.
For now, live 11 is in beta.
Best
YY

I’ll try to download another DAW to try it out!

1 Like

I’m playing MPE with Linnstrument last days, (host Gig Performer) all good with roundrobin.

@sdethuin look at the pitch wheel in Vital itself; is it centred? (switching presets I have seen this gone “south” sometimes)

Im on Live 11 beta also, will take a look :wink:

1 Like

I have the same issue playing with my Linnstrument. My repro aligns what you’ve got your video.

Steps:

  1. Load up “Synthetic Quartet” preset
  2. Turn on “MPE Enabled”
  3. Hold a note and bend it
  4. Release the note and rapidly play a note 7 times, before the first note’s envelope ends.

Results:
The 7th rapid note you play (8th overall) will be bent by the amount you bent the first note, then snap to the desired moment shortly after, when the first played note’s envelope ends. If you extend the length of ENV1, you can reproduce this less rapid presses, since the voice will last longer. I’d guess there’s a buffer of 8 pitchbends, and they’re being reset when the voice using them ends, but not when a new voice using that pitchbend begins.

I get this in my homebrew DAW, not Ableton, so I don’t think it’s DAW-dependent

1 Like

I think I see what’s going on here. I guess I expected a pitch change right after a new note is pressed but the MIDI coming in assumes that I’m going to reset the pitch bend on a new note.

Should be a simple fix.

hey @awwbees ! :wave:

2 Likes

Thinking more about this I’m not sure if this is actually something I should fix on my end.

MPE sends notes and pitch bend changes on different channels and it kind of feels weird to zero out a pitch bend signal on a channel on a new note…

I guess I’ll try this out and see if anyone complains.

2 Likes

@Tytel yeah careful about this…

@awwbees
Linnstrument can be set to “Pitch reset on Release”
NRPN
( 23 0-1 Split Left Pitch Reset On Release (unprinted parameter, 0: Off, 1: On)
( 123 0-1 Split Right Pitch Reset On Release (unprinted parameter, 0: Off, 1: On)

1 Like

@Tytel I think there’s definitely something you need to fix on your end, since the current behavior is objectively incorrect, though it’s possible that the specific fix of “reset bend on note on” is incorrect.

@nosmoscadabox I’d say Vital (or any MPE synth) should handle MPE with Linnstrument’s default settings properly, without the need for a user to turn on a special mode like that. The fact that a Linnstrument with default settings and MPE notes triggered from Live both exhibit the same issue in Vital further supports this.

Alright I talked it over with some audio devs and it looks like this is actually an Ableton bug (and maybe an @awwbees bug).
Here’s the relevant part of the MPE spec and I think I’m consistent with this because I’m using the most recent pitch bend. I need to double check that I’m actually ignoring changes if the note is released but I think I’m behaving correctly while the note is on at least.

2 Likes

ooh yeah, I guess both Ableton and me could both have the same bug, there’s my blind spot! I should try to repro in Vital standalone, I’ll do that in a bit. I’ll also try to repro with my Seaboard for an extra data point.

Yeah I’ll go over a couple things also, could also be an issue in the note off.

ok, I just tested in standalone, and I can’t reproduce it! looks like ableton and I both have some bug fixing to do. and no fixes necessary for vital, sorry for the false alarm!

upon further testing, it looks like the moment the incorrectly-bent note snaps to to the correct pitch is not based on time like I had guessed earlier, but instead based on when my finger moves enough to send a pitch bend value. which makes sense! my bug (and ableton’s, most likely) seems to be that I’m not resetting channel pitch bend when sending new MPE notes. I just fixed it in my software, and things seem to work correctly now.

I’m not sure how quickly ableton would fix this, so maybe you should add a checkbox somewhere as a bandaid for ableton users in the meantime.

2 Likes

It seems that to use Vital with the Linnstrument, there’s no special MPE mode needed, which is great! But out of curiosity, I turned it on and noticed some strange behavior that might shed some light on this issue. Or maybe it’s a separate issue entirely.

In any case, when I enable Vital’s MPE mode (even in standalone), it seems that the pitch bend information that existed for each MIDI channel before enabling MPE is locked in. In other words, if I play a phrase with a bunch of pitch glides without Vital’s MPE mode on, then enable the MPE, each channel will have a pitch offset added to it, retaining the pitch bend state from before. Repeatedly hitting a note will then play a 7-note sequence (7 notes because that’s how many channels there are in each Linnstrument split by default). The offset appears to be persistent, as playing more pitch glides in this state does not reset the notes to their natural pitches. Repeating the same note produces the same sequence until Vital’s MPE mode is turned off.

Even from that pitch bend section of the MPE spec, it still seems logical to assume that new pitch bend information should completely supersede the old, not act as an offset, so I think this is a bug of some kind. Fortunately, it only happens in one particular situation, where pitch bends are non-zero before enabling the MPE mode, but it might relate to some of the other issues people are seeing.

EDIT: I notice that the error also occurs when turning MPE mode off. When I enable MPE mode, play some pitch glides and then turn it off again, there is a pitch offset for each channel depending on where the pitch glides ended with the MPE mode enabled.

1 Like

I actually think that what @nathansnider describes is closer to my issue than what @awwbees talked about. It really just is about note retaining the bent information when they really should not.

I confirm the issue nathansnider describes using Vital v1.0.3 on Windows 10.
It was seriously throwing me off, thinking “Why does the synth play some notes out of tune?”.

Try this:
1 Have a MIDI logger to watch for note channels
2 Load Vital (MPE not enabled)
3 To make the issue obvious, use a very simple patch and set the pitchbend range to, say, 12.
4 Play a note on an MPE enabled sontroller and do a pitch bend, while noting the channel that was used
5 Enable MPE in Vital
6 Play some notes, listen, and watch the logger.

Result: As soon as the MPE controller chooses to reuse the channel that you noted in step 4, the bend will still be applied, that note will be out of whack.
Even performing a new bend on that channel doesn’t seem to change the out-of-tune-ness of that channel. In other words, the same offset will still be used when a value 8192 is received on that channel.

Doing a pitchbend on channel 1 seems to reset all channel’s pitch center to normal, this can be used as a quick workaround unti a fix comes along.