mute [suspend] automation host message...

I’m using Cubase 7.5 and VST SDK v3.6.0.

I have written a plugin (works fine) but there are a few remaining details I would like to iron out.

Each parameter of the plugin can be automated, and can display an automation track in the host (Cubase). Each automation track has a button (showing three bars) labeled “Mute Automation” which I believe should actually say “Suspend Automation”, but that’s just symantics and not related to my question.

Here is the question…

When I unmute the automation track for any given parameter, in the plugin GUI the value of that parameter changes according to where the cursor is on the automation track. For example, if the cursor is at 0.4 (between 0.0 and 1.0) and I unmute the automation track, the parameter changes to 0.4. If I then “remute” the automation track, move to cursor to a different location on the track, and unmute the automation track again, the parameter changes to reflect whatever the value is at the cursor crossing. This is all fine.

But I need my pluging to do a bit more when this action occurs. So in my code, whenever a parameter’s automation track is muted/unmuted, I need to catch that message and add some additional code of my own. How do I do this? I have spent much time searching for the host message sent to the plugin which mutes/unmutes an automation track, and can’t find it. I have even set breakpoints in the debugger in many likely places, hoping to catch the event, but none of them have ever been tripped. What message does the host send to the plugin for this action, and where in the plugin code can I intercept this message to add my own code?

Thanks in advance for your time…

Currently there is no dedicated interface allowing the host to inform the plugin about which parameter is automated or not or muted (suspended). This is something we are working on and will be include in a future VST3 SDK update…

keep tuning…

Thank you for your reply. If there is no interface to do this properly (yet), then I would like to ask another question.

There is a curious behavior regarding the mute/unmute automation button. When I unmute the automation track, the value of the associated parameter (in the GUI) changes to the cursor crossing value, as described previously, but the semantic action associated with this parameter is NOT invoked. If I subsequently move the cursor (either by clicking with the mouse or running Cubase from the transport bar) the parameter value changes AND the associated semantic action is invoked each time it changes. So it seem that the first time the parameter value changes (unmuting the automation track) the plugin doesn’t think there has been any change to the parameter, even though the value in the GUI changes, and therefore does not process anything.

My problem is, I NEED the semantic action to be invoked WHENEVER the parameter value changes, to stay in sync with something else in the system. Right now, when I unmute the automation track of the parameter, the nominal value changes but the corresponding semantic action which keeps everything in sync is not invoked. I suspect this has something to do with the “pointCount” (as in the processor):

queue = data.inputParameterChanges->getParameterData(i);
if (queue->getPoint((queue->getPointCount() - 1),sampleOffset,value) == kResultTrue)

But I’m not sure of this. So my question is this: Is there any way I can trick the controller into thinking the position has changed when I unmute the automation track and cause it to invoke the semantic action which keeps everything in sync?

I realize this a complex question, I have tried to keep things clear, but if I have failed to do so let me know and I’ll try again.

My original plan was to distinguish when "setParamNormalized() was invoked from unmuting the button as opposed to normal processing, and invoke the required semantic action directly in the former case and leave it to the normal flow of the controller/processor in the latter case, but since I can’t do that, I’m kind of stuck. Hoping you have a suggestion :slight_smile: