Gathering of parameter list broken in JUCE 5.4.1 Audio Plugin Host

Some plugins, like D-50 from Roland Cloud do not display any parameters in AU or VST3 versions. This works with earlier versions of JUCE.
Unfortunately I cannot tell exactly which version worked, but fairly certain that JUCE 5.2 worked ok.

Here are the two screenshots of audio plugin host diplaying the parameters for D-50. The dark image is the newest 5.4.1 JUCE and the white one is an earlier version which obviously works.

36-AM

Have you tried on other platforms than macOS?
Which version of macOS are you running?

If you could narrow it down to a specific commit that would be really helpful. There have been loads of changes to how we handle parameters since 5.2.

This might be a culprit:

You got it…
Commit 40d0d74ce4ff6e5bcb80a70a05625e2133f8723a works fine
Commit 611971181fcaca431f1aff29c87d74db314f62d7 breaks it.

Should we expect a fix soon or try to patch it ourselves?

Thanks!

Can you reproduce the issue with any freely available plug-ins?

No idea - this issue does not occur with Arturia VST3 plugins though – they seem to work fine. We only discovered the problem with the D-50 when one of our users reported the problem.

However, for what it’s worth - I did try the OP-X Pro (and there’s a free version of that I believe) and discovered that, while we get the parameter list, the list we get back is different between the VST3 version and the AU version. I don’t know if that is a clue. Hard to believe that the plugin would deliberate have different items for the same indices.

Also, according to Roland’s website, you can just create an account and get a 30 day free trial so you should be able to get the D50 for a month.

screenshot_3192

Is the list identical before the breaking commit?

@t0m - We figured out what’s going on.

The problem is that the setupParameters() call in initialization is called before the IO was set up and this particular plugin returns zero parameters in that case.

So changing this (within the initialize() function, line 1781

     addParameters();
     synchroniseStates();
     syncProgramNames();
     setupIO();

To this:

     synchroniseStates();
     syncProgramNames();
     setupIO();
     addParameters();

Fixes the problem.

My assumption is that these guys are reusing some of their code in many plugins and do not populate the parameter list until the plugin gets fully initialized.

Hope this helps.

Have you tested this with any other VST3 plug-ins?

editController->getParameterCount() is called in syncProgramNames too, so I’d suggest

 setupIO();
 addParameters();
 synchroniseStates();
 syncProgramNames();

instead. Does that work?

To answer my own question, no. I couldn’t find an order of initialisation where all plug-ins continued to function. We have to jump through all the hoops again after setting up the IO if we don’t have any parameters by then.

Thanks. This works with the reported Roland plugins now.

I know no-one reads the EULA, but if you’re a developer of audio plugins you are excluded from using Roland Cloud! :joy: Such a joke…

I did not know that – that is actually quite absurd – one wonders what they were thinking.

:rofl: :laughing: That’s some paranoia