We’re still having issues with parameter automation being disabled in Ableton upon session loads. There seems to be a parameter update recursion caused when the audioProcessorParameterChanged callback is triggered which sends the event sendAUEvent (kAudioUnitEvent_ParameterValueChange, index) causing the “Re-Enable Automation” button to light up.
We’re able to reproduce this with the JUCE GainPlugin in AU using JUCE 6.0.1 and Ableton 10.1.17.
There has been multiple iterations of this bug in the past but it doesn’t seem to be related to latency change updates anymore.
Thanks for the report. I’m able to reproduce this too using the GainPlugin and the latest Live 10 beta (10.1.25b1).
This doesn’t appear to be related to the parameter recursion which was fixed by Tom’s changes a couple of years ago and instead seems to be a difference in how plug-in state restoring is handled in Live for VSTs and AUs. In VST plug-ins it appears that any parameter changes made as a result of the call to IComponent::setState() -> juce::AudioProcessor::setStateInformation() are not treated as “manual” parameter changes and therefore do not cause automation to be disabled. You can verify this by calling AudioProcessorParameter::setValueNotifyingHost() at any other point in the plug-in as it will disable automation. However, it seems that AUBase::RestoreState() -> juce::AudioProcessor::setStateInformation() does not have the same behaviour and any parameter changes are treated as “manual” and therefore disable automation.
I’ve submitted a bug report to Ableton to see if they have any insights and will update this thread when I hear back.
I’ve had a reply on the bug report, seems like it is an Ableton bug and they are already looking into it:
I’ve submitted this information to our developers in an already open bug report that has been under investigation for quite some time (this issue affects various AU plugins in Live, but has been quite elusive over the years).
Hopefully your findings and test plugins will allow us to get a bit closer to a solution here.
Unfortunately, we’ve tried the latest patch on develop but the issue seems to be unrelated in this case. (We’ve also tested the SR patch a while ago without success). Thanks for the suggestion though!
This issue is AU-specific and can be replicated with the GainPlugin on develop in the latest Live 10 and Live 11 betas.
I’ve had a reply back from Ableton to say that the bug report wasn’t addressed in the 11.0 release but they have bumped up the priority and will look into it in their upcoming bug-fixing rounds.
I came across this bug recently - still happening in Ableton 11.0.2. I noticed using Apple’s own AUs I can’t trigger the bug. Investigating a little further it looks to me like this could be resolved in JUCE by not sending kAudioUnitEvent_ParameterValueChange during RestoreState.
Here’s an example patch - it’s horrible code but should show what I mean. From my limited testing in Ableton and GarageBand it seems to work.
Thanks Dimitri, I came to the same conclusion when investigating this initially and notified the Ableton devs of this behaviour in the bug report. I don’t think this is really a viable solution though as it’s almost guaranteed to break things in other hosts…
I’ve just bumped the bug report to Ableton and hopefully they will be able to look into this soon. @goodhertz
I got the impression from Ableton that they don’t see this as being their issue … i.e. most plugins behave ok in Live. Perhaps we can work out whether there’s a suitable fix at our end instead as I have other bugs to chase with Ableton that definitely can’t be fixed in the plugin
My suspicion is that this won’t get fixed fast in Ableton. And that there must be a JUCE end fix otherwise all the other AU plugins (non-JUCE) would have the issue too.