Reaper: Why are AU Parameters only displayed as normalised values? (Can be reproduced with JUCE demo plugin)

Don’t know if it has been discussed here before, didn’t find any topic on it.

When using AU plugins in Reaper, only the normalized parameter values are shown to the user when automating or switching to the generic parameter view. For an example this is what the JUCE DSPModulePluginDemo looks like as VST3

And this is what it looks like as AU

Seems like all the value to text stuff doesn’t work here. However, looking at a non JUCE AU, I this seems to work, so it doesn’t seem like a general Reaper/AU issue…

Loading the same JUCE example plugin as AU in a different non-Apple AU host, e.g. in Ableton Live (used Live 9 here) shows us that that the value to text translations works here

So I wonder what’s wrong here that it doesn’t work in Reaper? Is it a Reaper issue or a JUCE issue? Any hints would be appreciated!

I don’t know the source of the problem, but I can verify that I’m seeing the same thing too (comparing my JUCE plug-ins in Reaper vs Live).

Glad to hear that I’m not the only one facing this :wink:

Does someone of the JUCE team have an idea where to search for the source of this? I really don’t know if it’s a Reaper or JUCE fail, but as I see other AUs working in Reaper, I tend to believe that this is a JUCE error…

This post (with no responses) is talking about the same issue too:

Also, for what it’s worth: I just checked in Reaper, and for an AudioParameterChoice parameter, the stringFromIndex lambda is in fact used in the generic UI value display - so the lambdas aren’t universally ignored.

So far, it’s just the AudioParameterFloat that I’m seeing displayed as normalized 0-1 values (haven’t tried AudioParameterBool or the others yet).

Note that this display issue with AudioParameterFloat happens even if the parameter was initialized with a NormalisableRange other than 0-1. So in the Reaper UI, not only does the stringFromValue lambda go unused, but the value displayed is 0-1 normalized, even if it was given a range of, say, 0-100.

So for some reason, it seems like Reaper’s generic UI is displaying what it gets back from AudioProcessorParameter::getValue (which, in turn, calls RangedAudioParameter::convertTo0to1). Probably something going on in the AU wrapper?