surge-synthesizer / surge

Synthesizer plug-in (previously released as Vember Audio Surge)
https://surge-synthesizer.github.io/
GNU General Public License v3.0
3k stars 385 forks source link

Parameters automation resolution #7664

Closed iter8ll closed 3 weeks ago

iter8ll commented 3 weeks ago

First of all thank all of you who develop and maintain this beautiful piece of software.

Today I found that if I change parameter value via slider manually or via automation curve in DAW (Reaper in my case) I can clearly hear distinct steps in value change. I have not heard it before so I wonder if this is because some of my settings changed or otherwise I've not pay attention to that fact. It is not so obvious when block size in DAW set to low values but lately I've changed it to 1024 samples and now those steps are audible in real-time and present in bounced audio file.

So I just want to be sure if this is correct behavior and always have been like this? Because I've been messing with my PC hardware and overclocking settings so I'm not sure if its all ok on my side.

My setup is Windows 11 / Reaper 7.16 / Surge 1.3.2 (VST)

baconpaul commented 3 weeks ago

The vst doesn’t have sample accurate automation so large blocks will zipper. You may have better luck with the clap which can receive inter block parameter updates

(the vst3 spec provides sample accuracy but juce does not communicate it to us, more accurately)

basically what’s happening is the intermediate automation values in your block are getting dropped. We smooth over 32 samples or so but if your block is really big we will zipper (zipper being the term of art for what you are hearing)

iter8ll commented 3 weeks ago

Ok. Thank you for answer. So low block size is the way.

baconpaul commented 3 weeks ago

Reaper supports CLAP so would probably give you better results at high block size.

Other JUCE based synths may not act the way you want though.

But yes, a low block size is a good choice with VST2 and many VST3 plugins.