Calling VST3 EditController::setDirty()?

Hi!

The VST3 SDK has a class EditController, which has a function setDirty().
Is it possible to somehow call that function?

The reason is: my plugin has several UI parameters, which the user can save, which are not exposed as automateable parameters (such as day theme vs night theme). And currently the host does not realise, when the user changes them (how should it).

I tried updateHostDisplay instead, but unfortunately that does not work on all hosts. (There is a thread about it on the forum).

I see that there is a new VST3 extension interface in JUCE, called VST3ClientExtensions. I am wondering if that might be the way to go? Can I use that to get to the EditController class?
I have to admit, that I do not yet understand, how the VST3ClientExtensions works :slight_smile:

And I have an additional question:

Would it be possible, that JUCE calls the EditController::setDirty() by itself? Maybe as an additional parameter through updateHostDisplay()? As suggested by @jimc here:

@reuk
Wondering if you can give some insight on this?

I have the same issue where I am involved. I think we need to solve this problem soon. Any staff that can chip in?

I’ve added a field to the ChangeDetails struct which is passed to updateHostDisplay. By setting this new flag, the plugin can notify the host that the plugin state needs resaving. At the moment, this functionality is only implemented for VST3 and AAX. There does not seem to be equivalent functionality in the VST2 and AU formats.

Hopefully this works for your use-case - please try it out and let us know if you encounter any issues.

3 Likes

Hi Reuk,
thanks for adding this! Much appreciated.
I did not have time to test it yet. Will report back as soon as I can take a look.

Hi Reuk,

I had time to do some testing now.
The result: It works, but not on all hosts. I assume that the host must also listen to the dirtyFlag? Which apparently not all hosts do.

It fixed things on the following hosts:
Cubase, Ableton Live, Studio One

It did not work on the following hosts:
FL Studio, Reaper

So all in all, this is indeed an improvement :slight_smile:
Thanks again for implementing!