How the plugin can tell to the host the project state became dirty?

The hosts are not registering a change inside the plugin as a change in the projects if it’s not based on a parameter change (how would they, obviously). So if you make any changes to your patch that would be saved with the project but not exposed with a parameter to the host, then the host will show the project as saved and that can be misleading for the user, thinking their project is saved. Live even greys out the “Save” option in the file menu, so you have to use “Save as” to overwrite the file with the latest changes. Is there a best practice how to handle this situation, when you want to tell to the host, it should mark the project modified because something was changed inside the plugin?

I hoped maybe the AudioProcessor::updateHostDisplay() function can help with this (despite its GUI related name), but it seems it doesn’t help in Live.

hmm that’s strange, in my version of live I’m running, I always have the option to save the session. I guess the only thing would be to perhaps call setValueNotifyingHost() on a parameter with it’s current value in the condition which is causing you the problem : /

Not a great solution but not sure I can think of anything else. You could perhaps create a dummy parameter you use specifically for this?

1 Like

Hey Jake, what Live are you using? On 10.1 if I load up any project the Save functionality is disabled until I make a change (like tweaking a parameter knob in any plugin or change the mixer, etc)…

And yes to use a dummy parameter or resetting a non-dummy one can be a solution but that just sounds too bad. (Also I didn’t check but if I set an existing parameter to the exact same value, maybe the host won’t recognize it as a change and won’t make the project dirty. So I thought maybe I’ll need to change it then change back for proper notification. This thought discouraged me even to try it as it sounds so bad I thought better to ask here maybe someone has a proper solution :slight_smile:

Ahh yes, so I’m on 10.1 as well. I had a bunch of plugins in my default template. I removed them all, and I’m seeing the same issue as yourself in my plugins as well : /

Never noticed before! please share if you find a not disgusting solution! lol

1 Like

The same things happens with AAX plugins on Pro Tools. So far my solution was to add a dummy parameter. Note that on Pro Tools, changing a parameter to a value, and then setting it back to its original value was not enough as Pro Tools was smart enough to see that the value was back to its saved state.

1 Like

So I did a bit more digging on this, and for VST3 plugins, you have the EditController::setDirty() method (, that can be used to do just that.

I’ll have a look to see if there is something equivalent for AAX.
Question for the Juce team, how can I invoke VST3 methods from my AudioPluginProcessor instance ??


So do we have anything other than using a dummy parameter to notify host about internal parameter changes?