Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

VST 3 SDK Example Plugins Need To Be Updated to Follow Spec Regarding the use of setProcessing #132

Open
TroikaTronix opened this issue Jan 20, 2025 · 1 comment

Comments

@TroikaTronix
Copy link

TroikaTronix commented Jan 20, 2025

As outlined in this post I made on the Steinberg forum, the VST3 SDK plugin examples do not seem to follow the spec regarding the use of setProcessing(false) followed by setProcessing(true) to reset the plugin.

In the documentation for the setProcessing call, it says:

Note that setProcessing (false) may be called after setProcessing (true) without any process calls… this could be used to reset some buffers (like Delay line or Reverb).

A person with a Steinberg badge replied to the post saying

It seems that mda plugins of the SDK do not follow the VST3 spec regarding setProcessing…

which would seem to give official confirmation that this is an issue. (This person says that the 'mda' plugins do not follow the spec, but my examination of other plugins like AGain also show they do not handle setProcessing either.)

As noted in my post, these plugins also do not respond to an IAudioProcessor::process() call with all members of the ProcessData struct set to 0, which the documentation suggests should be interpreted as a "flush" operation.

Given that the SDK exists to provide meaningful examples of how plugins should function, and that one should be able to use those plugins for testing hosts, these is a flaws that should be addressed.

@TroikaTronix TroikaTronix changed the title VST 3 SDK Example Plugins Need To Be Updated to Follow Spec Regarding the use of setProcessing(false)/setProcessing(false) VST 3 SDK Example Plugins Need To Be Updated to Follow Spec Regarding the use of setProcessing(false)/setProcessing(true) Jan 20, 2025
@TroikaTronix TroikaTronix changed the title VST 3 SDK Example Plugins Need To Be Updated to Follow Spec Regarding the use of setProcessing(false)/setProcessing(true) VST 3 SDK Example Plugins Need To Be Updated to Follow Spec Regarding the use of setProcessing Jan 20, 2025
@attilammagyar
Copy link

  1. I wonder how many plugins are there already in the wild which completely ignore setProcessing() calls based on the examples, and only clear delay buffers and whatnot when receiving a setActive() call.

  2. Also, from a plugin developer point of view, there's a big difference between "this could be used to reset some buffers (like Delay..." (as in: it is safe, but not necessarily mandatory for the plugin to clear its delay buffers) and "this is used by the host to tell the plugin to reset any buffers (like Delay..." (as in: the plugin must clear those buffers). If the plugin must implement this call and do certain things in it, then can you please clarify that in the documentation as well?

  3. The documentation also says that "Note this function could be called in the UI or in Processing Thread". I think it should be emphasized that the UI thread is not allowed to call e.g. setProcessing(false) while e.g. the last process() call is still running in the audio thread, since clearing a delay buffer in the middle of processing is obviously a bad idea.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants