This change reshuffles the way that parameter updates and notifications
work for hosted VST3 plugins.
Previously:
- Parameter::setValue would update the processor and editor, but not the
host
- Parameter::setValueFromEditor would update the processor and host, but
not the editor
- MIDI CC events would be converted to events and added to the
processor's input event list, but were not forwarded to the
IEditController.
Now:
- Parameter::setValue updates the host's cachedParamValues, which is the
host's source of truth for parameter values. On each process callback,
changes will be added to the input parameter list. Then, for each item
in the parameter list, an update will be dispatched back to the
editor.
- Parameter::setValueFromEditor is removed. All parameter changes will
be sent back to the editor, even if they originated from the editor.
setValueNotifyingHost can be used to notify listeners that one of the
host's JUCE parameters has changed, e.g. in the host context's
performEdit.
- MIDI CC events trigger calls to setValueNotifyingHost on any mapped
parameters. The flow is very similar to a parameter change from the
editor: the cachedParamValues are updated immediately, and host
parameter listeners are notified. Then, for each changed
cachedParamValue an entry is added to the inputParameterChanges
(updating the processor), then for each item in the
inputParameterChanges an update is sent to the editor.