We’re also seeing this bug in our plugins. After investigating a little, we narrowed it down to
AudioProcessor::updateHostDisplay(), which calls
In the AU wrapper, this then calls
PropertyChanged() for a number of properties, even though latency is the only thing that changed. Commenting out line 1020 of
juce_AU_wrapper.mm fixes this behavior:
PropertyChanged (kAudioUnitProperty_PresentPreset, kAudioUnitScope_Global, 0);.
Ableton polls the values of all parameters and sets them internally when notified that a preset change may have occurred. This marks all parameters as “manually updated”, even though the value has not actually been set by the plugin, and therefore the automation is disabled because it is overridden by the “manual” setting.
In the VST wrapper, the specific cause isn’t as easy to see. Commenting out
hostCallback (&vstEffect, hostOpcodeUpdateView, 0, 0, 0, 0); fixes the problem, but by doing this we also probably stop informing the host of the latency change. There must be a way around this, since we’ve tested other non-juce plugins in Ableton and they are able to change the latency without disabling automation.