VST parameter recall issue on Live


I am experiencing a parameter recall problem with Ableton Live9 (don’t have the 10) on the VST version of my plugin. When I reopen a Live project the parameters of the plugin are not recalled back correctly.

I have made some tests on others DAW’s I do have.

It works on Logic (unfortunately that’s the AU version)

On Reaper it works both on VST and AU versions.

And on Ableton Live, the AU version works but not the VST!

Any experiences to share likewise , or any advices from Ableton devs ?

thank you.

seems there is a bug regarding vst parameters in live 10.0.2 (cf Problems with begin/endChangeGesture() in Ableton Live 10 / AudioUnit)
try with the latest beta version if you can.

Hi, thanks for the reply.

I don’t use the begin/endChangeGesture() method. Simply the parameters are shared with the DAW by getStateInformation() and setStateInformation() methods.

And I don’t have Live10 (it seems that it does not work there neither as reported) but I test with Live9.7.7

Maybe I should contact Ableton directly ?

What exactly is going wrong? How are you saving and restoring your plug-in state?

  • Consider a new blank Live set, with the plugin loaded on one track.
  • I change some parameters on the plugin, close its window and save the Live set.
  • Then after loading the Live set back, and opening the plugin window, I see that the relevant preset is not loaded and its parameters are not set as I saved it with the Live set.

This only happens on Live and with the VST version of the plugin, the AU version works Ok.

I am confused with what kind of coding practice I should take care to make it work for Live on VST version.

So is the problem that Live simply isn’t calling getStateInformation when the project is saved? Or is it that the plug-in’s state is requested, but you’re getting incorrect info supplied with setStateInformation when you load the project?

1 Like

yes, I am using the usual getStateInformation - setStateInformation duo. Both of your assumptions might be true?

Notice that when I close the plugin window and open it back the parameters are correctly called back. Does this mean that Live can indeed receive the state of the plugin correctly?

However when I load the Live set back, the plugin state has been messed up.

When you close and re-open the editor it gets the state from your processor (MVC pattern).

OK, I see.

You can check everything in the debugger - set the executable to Live in your Xcode scheme and then you can print debug information to Xcode’s console.

  1. Look when the last getStateInformation call happens and check that the state you are writing corresponds to what you think the parameter values are.

  2. Compare this to the data you get when you load the project.

Ok, good practice, thanks.

After a simple test, during getStateInformation method pass I get this error on the Xcode console;

Live[4647:237449] errors encountered while discovering extensions: Error Domain=PlugInKit Code=13 "query cancelled"

This is happening on the VST version of the plugin and this error is not printed on the consolu on the AU version running with Live.

That might not be the cause of the problem - you’ll be picking up debugging messages from Live so it’s hard to know what’s important.

Is the state that is saved and recalled by *StateInformation correct on saving and restoring? If not, how is it different?

interesting. I have focused on two parameters among a couple of hundreds. And it seems that the StateInformation gets the values correctly.
So it looks like the DAW is calling the original preset back with some kind of programchange message which overrides the values passed during the setStateInformation method, since what I see on the UI is the original preset and also sounds as it.

OK, there is a fix. I was calling the current preset within this method;

void AudioProcessor::setCurrentProgram (int index)


and when I discard that call, Live can set its saved parameter space correctly back on the plugin.

I am not sure about the consequence of this, and don’t understand why this has been not an issue elsewhere on other DAW’s.


Only solution I know is wait half a second between restoring params and accepting program changes

all right, setting a timer is like setting a time bomb in such situations. Both processes should watch each other, and will give go no go to each other. So this can be handled with a process order and why not even as a standard fix in JUCE then.

from Ableton: We’re getting in touch to let you know that Live 10.0.3 has been released. This version contains a fix for the AU bug you were experiencing in 10.0.2, whereby plug-ins would not recall their correct states.