Plugin and standalone, Linux and Windows behave/crash differently

I have been trying to make a plugin that is a “plugin host” itself and is supposed to recreate a “Unison” effect for the Dexed synthesizer:

  • Load (“host”) multiple instances of Dexed, each slightly detuned and stereo panned
  • Mirror all parameter changes of the master Dexed instance (instance 0) cto the other instances (instances 1-4)
  • Let the user change the amount of detune and stereo panning across Dexed instances 1-4

As of 63b1258, this works standalone, but crashes in REAPER.

…and the Windows VST3 running in REAPER doesn’t have the sliders working at all. They are just blocked.
(I can still edit the parameters by clicking on the “UI” button in REAPER through.)

Why am I getting different issues on different OSes? Isn’t JUCE supposed to work the same on all platforms?

It has taken me weeks now to wrap my head around JUCE but I must be missing something quite essential, since not even the examples that come with JUCE seem to be working for me.

Update: After further analysis the issue only appears when trying to host a JUCE 6 based plugin (here: Dexed) into HostPluginDemo from JUCE 7. Loading a JUCE 7 based plugin does not lead to the crashes. Thanks @reuk for the hint.

Should the tutorial teaching addParameter() be updated? I thought we were supposed to use the value tree technique.

Take a look at this page:
https://docs.juce.com/master/classAudioProcessorValueTreeState.html#acca3c6aca19e89d2781f0d1314d639e8

And try out some parameter attachments, it might be a bit more to get your head around upfront but it could solve your problems.

Thanks @AdamVenn. I will be using the value tree going forward.

But it turns out that the issue in this case was caused by a JUCE 6 based plugin trying to be hosted in JUCE 7. By hosting a JUCE 7 based plugin inside JUCE 7 my issues went away.

Glad you got it working!