Is it possible to make a "child" plugin that would go on multiple channels that relays information to a "parent" plugin, either on a bus or the master track?

This might be completely outlandish so forgive if so, but I have an idea that revolves around essentially putting a child plugin, on a couple channels that would feed information about the channel (gain, freq, panning, etc.) to the parent plugin. I think I need each channel to have the child plugin because I’m looking to analyze each channel separately, but in one combined space. (For example, I wouldn’t want a lump sum of the frequencies I want each tracks frequency output). And then to tack on more, would it be possible to effect the child channels from the parent plugin? It probably sounds like I’m just trying to build a whole mixing board at this point lol, but I’m more just trying to figure out the logistics of a project like this and if its even possible. If someone does think it’s possible, I would appreciate any pointers into what I should research and if JUCE has any built in way to make something like this achievable.

It’s possible, but plugins aren’t designed to work like that. So there is no built in support for it. There is no guarantee that each plugin will get the same block size, what order the plugins will get called, or that the plugins are in the same process. You’ll probably need to figure out a way to handle latency compensation.

If you are just doing a metering plugin, this might be ok, users might not notice if the timing of the blocks are slightly off. If you want to do a plugin that merges the audio back together, that would be much harder.

okay appreciate it. So do you think a project like this would be better off as its own application rather than a plugin?

That’s a tough call. It will probably be easier to implement as application, but a lot more work. Depending what it does, it might be harder to get users to install and app and recreate their projects than deal with a plugin.

Probably more of a business decision than a technical one. And if it needs to be a plugin, then you’ll just need to find a way to make it work.

Heard, thanks for the advice

There are ways to do this by creating a Manager class… and you create a SharedResourcePointer to the Manager class which is a static shared instance between all instances of the plugin - if the parent is the same plugin as the children with an option to set it as the Parent… you could probably come up with a methodology to have the Manager class keep a pointer to each instance. The parent can then ask the Manager class to get settings from each child… or have a Listener in the parent where the Manager class will send a message if any of the children’s settings are changed.


Wow that sounds like a great way to do it actually. Thank you very much for that advice, will dive deeper into it and see what I can do !