Is something like this possible?


#1

I want to create a plugin for which the number of parameters, and their properties like names, are defined in a config file. When the plugin is loaded, this config file should be parsed and the parameters exposed to the host. That’s pretty straightforward.

The problem is that I want to allow the user to create multiple config files, and keep adding, defining different parameter properties. For example:

  • synth1.config
  • synth2.config
  • synth3.config

For the host to be able to get the right properties on load, I could maybe expose them as seperate plugins with unique names.

Question 1:
Is it possible to make your plugin appear as multiple plugins in the host, exposing one name for every settings file like this?

  • Myplug-synth1
  • Myplug-synth2
  • Myplug-synth3

Question 2:
Is there another way to work around this? Maybe trigger the host to update its parameters (getNumParameters, getParameterName etc) once you load a new config from the plugin interface?

Any help is greatly appreciated. If I can’t work this out my idea turned out worthless…


#2

Hi,

This is a very interesting question, I had similar problems with a wrapper plugin and a proxy plugin.

My wrapper plugin is saved with a specific name. It loads a file having similar name (except the extension of course) from within the constructor, so it is able to provide the host with the right number of parameters. So this case is similar to your Q1. But I got bad behavior with some hosts giving a short time to the plugin to get instantiated. In some cases, if the plugin initialization takes a while, the host can kill the thread… Finally, I do only the mandatory job (loading parameter set definition) during the plugin loading, then extra job (getting connected to the network to allow remote control) later.

For the proxy plugin, whose role is to expose to its host the parameter set from a remote target on the network, it is declaring an arbitrary number of parameters since it has no idea of how much parameters it’ll have to handle once connected to its target. It works well, but I have not yet found a solution to re-declare the parameter set to the host (your Q2). Usually, the proxy is connected to its target before the host starts to request parameters, so it can get the right names and current values. But there is a limitation due the number of parameter declared at startup that seems it can’t be updated. If the proxy declares 100 parameters and its target has 150 parameters for example…

If anyone has a solution it would be greatly appreciated :wink:

/Phil


#3

Yes I thought about this. I am already reading the setup from the config, loading times is not an issue for me. The problem is that the user should be able to add multiple files. This approach would force me to compile a new plugin for every configuration name, since the plugin identifiers need to be unique. I can’t just copy and rename the AU component.

A partial solution would be to give the parameters a generic name (p1, p2, p3 etc) and declare the maximum amount of parameters you could possibly want, like you did in the proxy. But this takes away a lot of what I intended to do. I really need the parameters to adopt the names that are given in the config file, otherwise I really compromise the usability.