Plugin Parameter Order

Hi,

I saw this post: Order of plugin parameters

and wanted to ask if there by now is any way to order plugin parameters for control surfaces (like MackieControl). Logic allows this via a “secret” plist file that is created when you make a default setting for a plugin and I really don’t want to miss that feature.

Thanks for any hints!

There is not. They are presented in the order the plugin presents them.

1 Like

Dangit, thanks anyway! I guess I’d have to work around by creating an external app or something… Or maybe you have an idea how and where to implement that in the existing code? I can’t seem to find this specific ordering in the mackie control code… ardour/libs/surfaces/mackie at master · Ardour/ardour · GitHub

That’s the point: there is no specific ordering. We ask the plugin for the nth parameter, starting at zero. It gives us what it gives us.

1 Like

Right, I guess the question was more like “where to implement a reordering so that boilerplate in the single surface plugins can be avoided”.

Probably Plugin::nth_parameter() … you’d have to have to some lookup table that translated from “actual n-th” to “user-desired n-th”. You’d have to store those choices, possibly on both a per-session and application level, and reload them appropriately. However, this is a virtual method that calls into ::nth_parameter() so you’d also likely want to change the method heirarchy to have a common boilerplate ::nth_parameter() that does the mapping and then calls ::renamed_nth_parameter() to get the actual param.

1 Like

Right, thanks! Maybe I can look into getting something similar as in Logic going (i.e. some mapping file per plugin).

Ultimately, you’d also need an entire GUI dialog to allow the user to reorder the parameters :slight_smile:

1 Like

We do have a display priority for plugin controls; but

  • only Faderport8/16 uses that
  • only LV2 plugins set it

There is currently no trivial way to change the display priority. A Lua script is currently the only way for plugins other than LV2.

1 Like

I think the idea is for the user rather than the plugin to set the order.

What would a Lua script do?

You can change the priority to what the user would like with a script.

Can it operate at the nth_parameter() level?

Yes, nth_plugin(), nth_parameter()

EDIT: I was wrong. Since to C++ passes a const reference of the ParameterDesciptor to Lua, changes are not propagated back.

1 Like

So if I get that right it would make most sense to insert a hierarchy into the “display priority” like
user-supplied.conf>ardour-supplied.conf>plugin-internal.conf>by-numbers.default.conf

I don’t know if having a UI should be a deal breaker here, as said for Logic it’s also kind of a “secret” text file, I made myself a UI for that. Or is there some kind of database in an Ardour install that such info should be stored in? That would of course require internal tools to edit that. :thinking:

I’d more likely prefer plugin-parameter-orders.xml with a node per tuple (plugin API + plugin ID)

There’s no “database”. Our state is always serialized and deserialized to/from XML., for better or for worse.

1 Like

Also, Ardour is never going to supply its own priorites, and “by numbers” is identical to “by plugin”.

So it’s really just “user preferences” > “numerical order” (no conf file needed for the latter)

1 Like

Right, I just thought there could be the option in there for Ardour itself :man_shrugging:

So it’s down to where e.g. the LV2 plugins are polled for their “display priority” in favor of plain numbers - always check if theres a user supplied priority list in /plugin_metadata/plugin_parameter_orders (?) for that plugin and in case there is, use that.

Then, all control plugins should be checked if they even use that “display priority”, the “Faderport 8/16” plugin can be used as an example.

I never tried to set up the Ardour sources but maybe around the winter holidays there might be some free time to look into it. :face_with_monocle:

@x42 can comment more if needed, but i am fairly sure that LV2Plugin::nth_parameter() will return the nth parameter by display priority order (if set). I could be wrong.

1 Like

I don’t think it does.

This is pretty much all places the display_priority is used.

But anyway I realize that the priority list will do only part of what I really want, because to map out my control surfaces (Mackie C4 and others) I also need to be able to insert blanks, which again is possible only in Logic.

So far theres no other DAW really that can do that, apart from creating a hand-mapped project. I spent a lot of time mapping all my plugins, converting that to a new format would be no problem but losing my mappings would be a big step back :face_with_diagonal_mouth:

No, it returns the nth’ parameter in the sequence they are defined in the .ttl.
Display-priority is an optional port-property: LV2 Port Properties which can also be added after the fact.

1 Like