Processor automation vs cc

I stumbled on something that is troubling me while wrapping the excellent “Connie” (Vox Continental emulation) in a JUCE plugin. (But it’s nothing related nor to JUCE nor to Connie.)

Let’s say I have a midi track with a midi synth.

This synth exposes some automation parameters. Let’s say “vibrato”.

This synth can also receive learned midi CC to control the same “vibrato”. Internally, the midi CC are converted to the automation parameter.

I record a midi region, playing notes and moving the midi controller affected to “vibrato”.

And I also add an automation track for the “vibrato” parameter.

When I playback, there are both CC and an automation track controlling the “vibrato”, what should happen ?

It’s very confusing for me. Could someone kindly clarify how this should work?

You should choose one or the other method of controlling it, not both. If you want to use a MIDI CC to control vibrato, use MIDI learn (or a binding map) to map the control to the vibrato automation control in Ardour. Do not use a separate MIDI CC track as an additional control.

1 Like

Thanks, and ok, one or the other. That makes sense !

According to you, would it be a good idea to completely disable midi CC assign. inside the plugin and fully rely on the host ? Is it common practice ?

Anyways, this was the chance for me to read the manual about MIDI Learn and automation which is very clear, and the process of assignment is itself very convenient, esp. using the inline controls in the mixer strip.

Note: I found two strings in the manual that do not match the ones in 8.12 (page The Ardour Manual - Generic MIDI Learn)

  • “Edit with Generic GUI” → “Edit with Generic Controls”
  • “Controls” → “Inline Controls”

Let’s put it like this. In the VST3 plugin system, plugins cannot even receive MIDI directly.

1 Like

That is a conceptual mistake. Either expose the parameter as MIDI CC or as control parameter, never as both.

VST3 got this right by dropping MIDI Control Changes as Events. CCs are just control parameters that the host binds to MIDI CCs. Since only the plugin host can know if a given parameter is automated, user-edited and/or MIDI controlled.

Other plugin standards (which JUCE supports) work differently, but also there a plugin has insufficient information to pick one over the other, and hence a given control should only be exposed once.

It’s a corollary from the requirement that a plugin should not change its own inputs.

1 Like

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.