ACE Fluid Synth responds to controller CC knobs without plugin interface feedback

Hello. I’m currently using Ardour 6.9.0.
By turning the CC 7 knob on my MIDI controller I am able to turn what I presume is a form of channel output volume up or down, but this is not reflected in any of the software faders on the plugin’s control interface or the master fader. This is happening by default without any configuration on my behalf. ACE Fluid Synth seems to respond to my midi controller by modifying a volume parameter that is not shown anywhere. It seems to function independently from the Output Level fader under plugin controls or the channel’s fader in the mixer.

I’ve noticed this behaviour also with the CC 1 knob which adds a form of vibrato to the sound but, again, not reflected in any of the UI faders.
This is happening on a per-channel basis. So if I have a track on midi channel 10 and another on on midi channel 1 they respond independently. Also, the effect of the buttons seems to be consistent with the MIDI specifications per which CC 7 corresponds to channel volume and CC 1 to modulation. So the functionality seems to be correct but just not correlated with any interface control which is quite confusing. Is this a normal behaviour?
Thanks.

MIDI CC 7 is defined the by MIDI specification as a volume control. There’s no particular reason for it to correspond to some visible plugin control. It is actually quite sensible for a plugin to obey it even if the plugin offers no comparable control in its GUI.

1 Like

Thanks for the reply.
Ok, but the plugin DOES offer a visible interface fader which is labelled as “Output Level” as per the screenshot. Still, the Output Level fader in the control panel is unaffected by the MIDI controller whereas the volume does decrease. This would imply that the midi controller changes another similar property? Why is there a difference between the “Output Level” in the interface and the hidden property changed by the midi controller?
Screenshot ACE Fluidsynth controls

That would be something you’d be better off asking the author(s) of FluidSynth about.

I agree that from some perspectives it can seem odd, but from others not so much.

Output level is global, while CC7 is per MIDI channel.

It is similar for the other exposed controls. They are MIDI channel independent and hence cannot be controlled by MIDI.

Ok, I get it now. I mean it is confusing but I understand the reason behind it. Probably to expose a group of controls for every channel would have been difficult so the developer(s) chose to provide only a set of global controls.

By default no, but you can control them via Ardour’s Control Surfaces apparently. And since the plugin silently obeys some of the per-channel controls if you map one of the inteface-exposed faders to one of the active channel controls you get a weird situation where a knob controls both the global plugin volume and some other sound effect. Since the MIDI CC specifications are rather loosely implemented it’s hard to know what they chose to implement exactly without reading their library documentation.

Thanks for the answers it helped clarify things. I understand now this has more to do with the way Fluidsynth is built rather than Ardour specifics.

It would have lead to ambiguities.

You cannot have a GUI slider, and at the same time allow to control the the parameter by MIDI.

Say you send a CC7 command to lower the volume, and the same time use the mouse (or automation) to move the GUI volume slider up. Who wins?

And yet, this is exactly what happens if you enable Control Surfaces in Ardour and assign a MIDI control to a fader. You can modify the value both via the midi controller and with the mouse. I’ve just tried this.

You can provide UI feedback without UI control : for instance a disabled (grayed out) fader or a numeric value, something to let the user know that a value has in fact changed even if changes are performed only by the midi controller. Or, if you don’t want different modes of operation to compete for the same resource you can provide a switch, etc. It’s quite bad to have these modifications happen without notifying the user. Most entry level midi controllers only feature a tiny display that is activated only when you actually twist the knob. The is nothing to inform you at face value that a certain button is turned to 0. You can actually make an instrument silent by accident and there is nothing in the plugin panel to confirm this.

Currently, with Control Surfaces, it seems the mouse operation prevails over the midi controller although it may just be competing events . I haven’t tried with automation yet but it is a common rule that human interaction overrides the automated process.

In this case Ardour is on control, which is fine. e.g. ignore MIDI events when the parameter is automated, or touched.

A synth plugin itself has insufficient context to do this, only the plugin host can.

When a plugin handles CC events internally, the host has insufficient knowledge (which controls would be affected), and vice versa.

This is not a new issue, and various solutions have been proposed. e.g. VST3 addresses this by turning all CC parameters into actual control parameters.