Not all FourOsc parameters seem automatable

Hi,
I’m implementing a GUI for the FourOSc synth and can’t seem to find automatable parameters for all values.

It seems that it’s all the parameters with non-continuous values.
(test in Waveform suggests they’re not automatable there either)
Is this because of technical limitations? Design choice?

More importantly, since those are not automatable parameters, is it ok to connect them like this to a slider? (so without valuestate listeners, sliderlisteners, async update etc)
Or does this connect gui thread and audio thread risking creating audio artifacts?

onButton.getToggleStateValue().referTo(plugin->reverbOnValue.getPropertyAsValue());

General:

  • Osc WaveType
  • FilterType
  • ADSR slopes (filter slope, amp analog)

The on/off switches of the effects:
DistortionOn
ChorusOn
ReverbOn
DelayOn

Other values:
DelayValue

Those parameters can’t be changed without causing a click, therefore they aren’t automatable. And users probably won’t change them while playing.

That is the correct way to listen to those values. The audio thread will never change them, so your listener won’t get called from the audio thread. The audio thread only peeks at the cached value.

Thx, yes make sense , some DAW’s allow to automate them, but especially on the filters a sudden change from HP to LP with resonance to the max can be scary

What hosts allow automating them?
It’s really bad practice to ignore the isAutomatable() property for parameters from hosts. This could mean the parameters aren’t thread safe etc. inside the plugin.

I wonder if I should add this as an extreme test to pluginval if its something actually done by some hosts…

Ow no, sorry for the misunderstanding.
I mean that some DAW’s allow properties like filtertype and effect on/off to be automatable for their own internal plugins, no talking about FourOsc here.

Ah right. Yes, it’s possible to be able to automate them but requires extra work. It’s just not something 4OSC offers I’m afraid.

Well, the source code being available I can always try myself of course.
If ever I have the time I’m going to create a new subtractive/sampler plugin taking the best from the sampler and fourosc plugin anyway.
If my code isn’t too embarrassing, I’ll share it on the forum.
(coming from .NET background I might offend the C gods from time to time abusing scoped, unique, reference counted pointers and references just to pass the compile errors)

1 Like