DISTRHO / DPF

DISTRHO Plugin Framework
ISC License
672 stars 97 forks source link

VST3: first parameter always set to default from save #442

Closed isivisi closed 10 months ago

isivisi commented 11 months ago

I'm consistently having issues getting the vst3 build of my plugin to load the first parameter value from a save state. In ableton the value saves fine in save files and presets and everything updates accordingly while using the program, but upon saving and reloading a project the first parameter is always set to its default value.

This also happens in carla when cloning the plugin. Also requestParameterValueChange doesn't work in Carla with vst3

I checked out another plugin (wolf-shaper) and it also had these issues

VST2 works perfectly everywhere

falkTX commented 11 months ago

Are you using develop branch? there were some fixes related to this.

isivisi commented 11 months ago

I switched to the develop branch and tried it out, still the same issues on both windows and linux. Also I just realized it is setting the value to its minimum value, not the default.

Now that I am back on windows I tested wolf-shaper in ableton and it worked fine, but in carla the issue persisted but it was being set to its default. This issue might partially be something on my end due to this odd behaviour. But other vst3s that (assumingly) dont use dpf do properly clone the first parameter in carla (tested codec, fabfilter)

isivisi commented 11 months ago

I've narrowed down the issue to DISTRHO_PLUGIN_WANT_MIDI_INPUT being enabled. For vst3 this adds a parameter offset and seemingly causes the issue. Without midi input enabled the first parameter is properly cloned and loaded from save in carla and bitwig.

falkTX commented 10 months ago

That was it! A little typo kinda thing where enum increment was not done properly. Fixed in 915daad0ac414abfe0a85207ccacd2d3ea871d53

Also saw some hosts not updating component + controller properly at the same time, so fixed that up now too.

isivisi commented 10 months ago

Tested, works great! The first value gets brought back fine :)