I’m not completely confident about the way my synth plugin should be handling parameters as it relates to MIDI CC data.
My synth, like many/most synth plugins, allows the user to assign a MIDI CC# to a parameter, usually to control that parameter by a hardware controller. Example: a knob on a hardware controller used to control filter cutoff.
The way I’ve been handling this is:
- handleController() receives the event in the
processBlock() - I look up what parameter is mapped to that CC#, if any
- call
parameter->setValueNotifyingHost()
That seems correct to me…it seems the equivalent of a user moving a UI knob.
But then I have a couple of users that ask me why opening and playing back a sequence (without changing anything) is marking their project dirty and needing saving. My assumption is that by me calling setValueNotifyingHost(), the DAW thinks the user has changed something and therefore it needs saving. But, part of me agrees with the user that simply playing back a sequence should not mark it dirty.
Is this my plugin’s fault? Or possibly the DAW’s? Or is it simply a by product of using MIDI CC automation instead of parameter automation? And…does VST3 come into play here? Should I be doing something different for VST3?
How do any of you handle this? Any clarification would be appreciated.
