surge-synthesizer / surge

Synthesizer plug-in (previously released as Vember Audio Surge)
https://surge-synthesizer.github.io/
GNU General Public License v3.0
3.15k stars 400 forks source link

Patches using Single Trigger do not work correctly with Ableton Live 11 Beta and MPE #3776

Closed sourcebox closed 3 years ago

sourcebox commented 3 years ago

Bug Description: When using the current Live 11 Beta, any patch using single trigger mode will not trigger envelope states correctly when MPE is enabled in Live.

Surge Version 1.8.1

Reproduction Steps: Steps to reproduce the behavior:

  1. Select patch Claes/Basses/Dist Bass 2
  2. Make sure MPE is enabled in Live (shown in upper right corner of the device)
  3. Play some notes with legato
  4. At some point no notes will be triggered anymore, played notes do not release correctly
  5. Disable MPE in Live (with context menu of device - right-click)
  6. Reload the patch at try again. All notes are playing correctly.

Computer Information (please complete the following information):

baconpaul commented 3 years ago

When you enable MPE in live do you also enable it in surge? Sending MPE messages to a non-MPE surge will give inconsistent behavior. To enable MPE click the button labeled “MPE” next to the patch browser and make sure it is lit.

sourcebox commented 3 years ago

Enabling MPE in Surge does the job. Unfortunately, MPE seems to be enabled in Live 11 by default when the VST supports it. So I think, more people will run into this issue. Is there a way to dynamically report it to the host?

baconpaul commented 3 years ago

Maybe! That was the next thing I was going to check.

https://steinbergmedia.github.io/vst3_doc/vstinterfaces/classSteinberg_1_1Vst_1_1IVst3WrapperMPESupport.html

My guess is I have to implement that interface. Lemme tag this into our 182 milestone.

mkruselj commented 3 years ago

This also needs to be reported to Live I think. Live should send certain RPN messages so that plugins that respond to those can automatically set themselves up properly. Surge responds to those RPN messages.

baconpaul commented 3 years ago

ahh and live 11 beta is only available to owners of live, of which i am not one.

@sourcebox i may ask you to test a nightly in the next week or two. Would you be willing to help with that?

sourcebox commented 3 years ago

@baconpaul Of course, I will help you as much as I can.

baconpaul commented 3 years ago

Super; I won't get to it this afternoon but will update with that API above soon.

And as @mkruselj said I think you may want give live beta team feedback that either they didn't send surge an RPN message to trigger MPE or they sent a malformed one or we received a malformed one or we interpreted it wrong (one of those four!). Feel free to point their devs at this ticket too!

sourcebox commented 3 years ago

@baconpaul I just filed a bug report at their tracker that refers to this thread.

baconpaul commented 3 years ago

Great I'm happy to debug it also if they can just get me a copy of the live beta to run. It's either an RPN error, me not implementing that API, or them not sending something. But if they don't, then I"m also happy to try implementing that API in the dark, adding a bit of logging, and sending you a VST3 to test :)

sourcebox commented 3 years ago

I got a reply from Ableton that they could reproduce the issue and have tracked it internally. So I suggest we put this on hold and wait if they come up with some fix in one their next updates.

baconpaul commented 3 years ago

wonderful

baconpaul commented 3 years ago

Hi @sourcebox - I see the live 11 release is tagged for late Feb. Have you had any luck resolving this with their devs?

Thanks!

sourcebox commented 3 years ago

@baconpaul There have been some beta releases over the last 2 weeks, but none of them addresses the issue. I made a quick test whenever a new beta came out. The ticket is still open in the their tracker but I can't look into any details.

baconpaul commented 3 years ago

So I downloaded live 11 trial today

at load time:

  1. It loads surge with live setting it to MPE mode
  2. It sends surge no NPRN messages to activate MPE
  3. It doesn't call the VST3 API to activate MPE

so I suspect this is still a problem. I hear that other plugin devs are also struggling with same so I'll keep my eye out.

mab-ableton commented 3 years ago

Hi, Ableton dev here. We've implemented a fix which sends the RPN message sequence to plugins when we want them to be in MPE mode. I've tested it with Surge and it seems to work fine (i.e., Surge places itself into MPE mode when we send it the RPN to turn on the lower zone for MPE, and it clears this setting when we send the RPN to deactivate MPE). This was unfortunately too late to make it into the 11.0 release, but it will be in our first bugfix release (most likely version 11.0.5), which should go into beta within a couple weeks.

A couple quick questions:

  1. Do you know of other plugins that respond to this RPN? In my testing, Surge was the only such plugin I found.
  2. Some of the comments above mention a VST3 API which is supposed to get called to activate MPE. Can someone point me at that API, so we can call that as well? (The VST3 version of Surge already seems to respond correctly to the RPN, but we'd like to ideally do everything we can to make sure plugins' MPE mode is correctly synched to Live's).

Thanks!

baconpaul commented 3 years ago

Hi @mab-ableton thank you for dropping in here! I am not sure, but I think equator may respond to those messages?

https://steinbergmedia.github.io/vst3_doc/vstinterfaces/classSteinberg_1_1Vst_1_1IVst3WrapperMPESupport.html

The VST3 API I tried was that one. But it didn't seem like Live 11 called my function.

I've also pinned a message to our users for now to make sure surge and live MPE are in sync by hand. But when 11.05 ships I can tell them to upgrade instead :)

while I have your attention, by the way: Is there a program for devs to get NFR live copies? I'm a logic pro user myself so have a demo I can't save in for testing. No big deal if not but thought I'd ask.

baconpaul commented 3 years ago

Oh and to be clear: since live didn't call that function, I didn't merge the change which has an implementation of it. And I wasn't 100% sure it was right (the VST3 api is large and full of corners).

baconpaul commented 3 years ago

I’m actually going to close this issue since its fixed in 11.05 and we’ve updated our faq and help channels in the interim. Thanks again for the help @mab-ableton and if you do end up coding another approach to indicate MPE pls do let me know and I can mod surge.

Best