Reaper does not write param automation if GUI is closed

Hey guys,

I found a strange behaviour and I’m not sure if it’s a “bug” or a “feature”.
In any case I’d like to find a way around it, if possible.

In short: in Reaper, if my plugin’s Editor is closed, the automation envelope for my parameter does not get written even though I can see it’s value changing.

To replicate the issue, I took the project from the AudioParameter Tutorial (The one with just a gain slider, https://juce.com/doc/tutorial_audio_parameter). I added a timer which changes the gain to a random value every second. Code below:

virtual void timerCallback() override
{
	float newGain = m_random.nextFloat();
	m_gain->setValueNotifyingHost(newGain);
}

When the plugin’s GUI is open, it works as expected: I can set the track’s automation mode to “Write”, arm the envelope, and press play, and I can see the envelope jumping up or down once per second.

However, as soon as I close the plugin the envelope goes flat. The little knob does keep changing its value every second, though (marked with a red arrow on the screenshot).

Am I doing something wrong, or is this a Reaper issue? I have tried it with other hosts (Ableton Live and PreSonus Studio One) and it works just fine, regardless of whether the Plugin’s window is open or not. I still do want to make sure it’s not a bug in my code before blaming Reaper.

Thanks in advance!

Forgot the screenshot, here it is:

You appear to be running the plugin as a bridged external process in Reaper, did you intend to do that? Does it work when you load the plugin normally? (For 64 bit Reaper you will of course need to compile your plugin for 64 bits…)

I’m not sure it will work, but you may try wrapping your setValueNotifyingHost() between a beginChangeGesture() / endChangeGesture() pair and see if that convinces Reaper to behave

Hi guys, thanks for your responses!

Yes I was too lazy to build the tutorial plugin as 64bit last night, but it makes no difference.

Was a good try, but it didn’t help unfortunately :frowning:

Hey guys!

I had completely forgotten about this, but I just got a bug report with this behaviour and thought I would bump the post, sorry about that!

These are being called in the following order:
AudioProcessorParameter::beginChangeGesture()
AudioProcessorParameter::setValueNotifyingHost(…)
AudioProcessorParameter::endChangeGesture()

And I’m debugging with the Debug x64 build, so not bridged mode.

I Also replaced my GUI with an empty AudioProcessorEditor to make sure that it wasn’t my GUI class doing something funky. Same behaviour.

Seems I’m not the only one, though the offered solution only works with MIDI (really old post):
https://forum.cockos.com/showthread.php?t=62836#8

Anyone have any more ideas?

Did you manage to figure this issue out? Thanks!

Unfortunately no. :confused:

Pretty sure it’s a Reaper issue, in Pro Tools it works just fine with the GUI closed.

Hi!

Just for future reference, there is a fix for this in the Reaper settings!

Preferences > VST > VST compatability > Parameter automation notifications

Set to “process all notifications”. Works like a charm.

4 Likes

Nice!

This might be even more interesting, as Reaper allows for a second “embedded” GUI for a VST plugin - and this is supported by JUCE as well for VST2 as for VST3. Here the main GUI of the plugin can be closed, while the embedded GUI (in the track control panel or the Mixer control panel) still is open and can be used to tweak parameters.
-Michael