AU parameter automation issue - ToggleButton does not write

I am seeing this with ComboBox in our project as well. all TextButtons and Sliders work as intended

OK, thanks for the confirmation. Out of curiosity, which method in JUCE are you using for linking GUI components and parameters? (As mentioned above, I was using APVTS for parameter management, with the Attachment classes to link them to GUI components.)

mSequencerOnButton.setName(kSequencerEnabledButtonName);
mSequencerOnButton.setButtonText("Sequencer Enabled");
addAndMakeVisible(mSequencerOnButton);
mSequencerOnAttachment = std::make_unique<ButtonAttachment>(mVTS, kSequencerEnabledId.toString(), mSequencerOnButton);

I think essentially the same as you, trusting the ButtonAttachment to do what it is supposed to do. All other hosts it seems to be behaving except in Logic 10.4.5+, I confirmed 10.4.6 is also bad)

Ah, I’m on 10.4.1, so I guess it’s not a problem until that later version. Sounds like a bug report needs to be filed. (Not that Apple ever responds to those, in my experience.)

FYI all, filed a bug as this is easily reproducible even in the APVTS tutorial

1 Like

Thanks for filing that bug report with JUCE – although I think Howard was actually suggesting filing a report with Apple, since it seems to be something that broke only in the latest Logic Pro versions.

2 Likes

Yeah, I figure it could be one or the other. Perhaps Apple changed how it deals with parameters like this so JUCE needs to update to account for it.

Also, in the past Apple hasn’t done much about the bugs I’ve filed. If anyone else is feeling lucky I support them trying to file there

Interesting update. I’m seeing this with a bunch of other plugins some ones I’ve seen it on for example. In these plugins, try to automate any toggle buttons or discrete parameters and you won’t be able to. Continuous parameters work fine

AUNewPitch
IZotope Trash 2
Serum
Sylenth

So this seems to be a bigger issue

Again this is all 10.4.5+. Going to start digging on apple forums, and possibly file a ticket.

@leigh this definitely supports you and @HowardAntares thinking this is on the Apple side

1 Like

It may indeed be an issue on the Apple side for this latest build of Logic.

However, as mentioned above, this issue is also happening in Ableton Live 9 and 10 versions (again, with just the AU format). So there’s also an issue on the Ableton side - or maybe there is some incomplete implementation within JUCE AU wrapper. I do not have enough knowledge of the Audio Unit spec to say where the finger of blame should be pointed…

I see this happening now that I’ve updated to 10.4.6 (from 10.4.1). My plugins that are auwrapper-wrapped VST3 plugins, however, work correctly, so it appears to be something that JUCE does different from how the auwrapper and underlying VST3 do it.

I don’t see any difference in the data sent, however, at the time of the parameter change. The notifications (begin/change/end) look identical with the auwrapper code. So perhaps it is the definition of the parameter that differs? I’ll look into that next in my project.

I sent feedback to Apple for this: FB6797484
https://feedbackassistant.apple.com/feedback/6797484

I’ve not been able to get anything to work correctly, including using auwrapper. Steinberg’s free version of HALion has the same non-automatable toggle behaviour, but maybe they use something different in their own products.

Would it be possible for you to strip a working example right down, so we can examine it for differences?

Might be easier to take one of their samples like AGain and apply the wrapper to it, then see it work there. My project is very integrated with other libraries, etc., and would take me more time to strip out than to start fresh or use a VST sample. I’ll see what I can put together.

OK, I’ve got the Steinberg helloworldWithVSTGUI compiled, and a nice mix of behaviours to investigate.

If I toggle a boolean param in my JUCE test plugin I can see the parameter value move, but the automation is not recorded, in both the JUCE GUI and Logic’s autogenerated GUI.

In the Steinberg example automation is correctly recorded when using Steinberg’s GUI, but the parameter value doesn’t change in the automation lane when toggling the checkbox in Logic’s autogenerated GUI.

It feels like there’s a solution in there somewhere…

2 Likes

Just chiming in to say that I have experienced this issue with Ableton 10.1. Toggle automation did not work in AU format but worked when I compiled the same project as VST2.

I’ve still not got to the bottom of this, but I suspect we could be looking at two different issues.

Live

Toggle automation starts working correctly only if you change the parameter value from Live’s parameter UI first.

I’ve not found any plug-in with a boolean AU parameter that doesn’t have this behaviour, and it seems to be independent from the behaviour in Logic. If people reading this thread could throw their plug-in collections at the problem and see if they see the same results that would be useful. The more prominent non-JUCE plug-in/synths we can survey the more weight bug reports will have.

The easiest way to tell which of your AU plug-ins have boolean parameters is to use auval. If you enter

auval -a

into the terminal then you’ll get a list of the installed plugins. For each plugin you can then do something like

auval -v aufx bpas appl

where aufx bpas appl are the first three entries on a line corresponding to a particular plugin. Under the PUBLISHED PARAMETER INFO heading you can see something like

Parameter Type: Boolean

for a boolean parameter.

Logic

I’m still looking for a plug-in (discounting the ones built in to Logic itself) which toggles as expected from both the plug-in’s GUI and Logic’s autogenerated GUI. Some plug-ins seem to be able to toggle from their own GUI, but I’ve not found any which can toggle from Live’s GUI. Again, any non-JUCE examples people can contribute to this thread will help.

Yeah, we’ve seen that here as well. It appears that there needs to be automation already recorded before our own automation records properly in Live. Our tech support has this as an FAQ already. But Logic definitely changed their behavior for the last couple of versions.

1 Like

I have confirmed both issues that t0m mentions in his post in our SSL Native plug-ins.

Since Logic 10.4.5 we also have a problem where we cannot write automation from a control surface.

1 Like

No idea if it’s JUCE based or not, but the unison switch in Hybrid 3 AU by Air is exhibiting this same behaviour in Live (doesn’t record until you have written in some automation manually).

image

1 Like

So for Logic the problem boils down to

param.beginChangeGesture();
param.setValueNotifyingHost (newValue);
param.endChangeGesture();

no longer working if all the calls happen consecutively. If you instead do

void mouseDown (const MouseEvent&) override
{
    param.beginChangeGesture();
}

void mouseUp (const MouseEvent&) override
{
    param.setValueNotifyingHost (newValue);
    param.endChangeGesture();
}

then things work as expected. This doesn’t, however, fix parameter toggles from Logic’s autogenerated UI.

3 Likes