I'm confused about kAutomatable and Program Change


I’ve read carefully the spec and it says that if changing the program index parameter changes any other parameters then it should not be marked as automatable.

So I’m a bit confused. I thought that one of the purpose of program change was to have a bunch of patches loaded into memory and be able to quickly load a patch within one sample without having to do disk access, malloc, … but if it is not automatable then this feature is not possible?

What is the use case for the program change in vst3?

Many thanks,

Yeah, it’s confusing. It may should state, that this depends highly on the used DAW and the used automation record mode.
You can try this out yourself with the mda JX10 synth from the SDK. It has an automate-able program change parameter which changes other parameters.
Depending on the record mode, the DAW may write automation for the parameters the program change parameter is changing in an unpredictable way.
Best is to see this yourself.


Isn’t it strange that it depends on the DAW and the automation recording mode?

  • How to know which DAW and which version it is? I remember calling IHost::getName() with cubase and the returned value was “Cubase” without any version number. I think it would be really nice to have a additional interface to get more information about the host. I hope I did not miss something in the SDK :unamused:
  • How to know what is the current recording mode?

If we’re conforming to a standard we should not even care which DAW it is or what the current recording mode is, right?

Thank you very much Arne.


OK, I was not very clear with my message. But I really don’t want you to check for the host name or its automation record mode in your plug-in. You should just be aware that it is actually possible to do, but with so many different results that you should implement it as the SDK documentation says. Don’t make the program change parameter automatable.
It’s actually nothing new, the same results happens with any VST2/AU plug-in if you are in automation record mode and send a program change via MIDI to a plug-in.


So the JX10 in the SDK should be updated to not have the kCanAutomate flag as well?