-
-
Notifications
You must be signed in to change notification settings - Fork 97
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
Vst3 io fixes #389
base: main
Are you sure you want to change the base?
Vst3 io fixes #389
Conversation
Previously all inputs (num_channels) were assumed to be on the first bus. However Vst::ProcessData's input/output is an array pointing to instances of Vst::AudioBusBuffers (not a pointer to a single instance). This fixes CV ports (optional busses) for Cardinal VST3, and likely also sidechain inputs for other processors.
Vst::SpeakerArrangement is a bitset with each bit corresponding to a port of the current bus.
First one makes sense, I did the same in CLAP but forgot about it for VST3. I am not so certain about the 2nd one though. JUCE hosts are particularly picky on what plugin sets as bus arrangement, easily bailing out if the bitmask is from anything not known. |
1st patch merged to develop as 36f018d thanks |
DPF handles this just fine. DistrhoPluginVST3.cpp (NB use different buffers for input and output: silence for inputs, scratch buffers for outputs. Currently writing to the shared fDummyAudioBuffer modifies input data. The current approach only works if input data is read before any outputs is written). |
"fine" depends on the perspective. DPF plugins never know if host changes something so a stereo signal suddenly becomes mono, or vice-versa. The point of input vs output buffer reusage is a good one though |
The 2nd patch is also not critical. IIUC VST3 host needs to provide a valid buffers if a bus is enabled, regardless of the speaker arrangement. |
Does Ardour provide a way to disable individual VST3 buses? I could give this some testing if so, my comment in the code regarding disabling (or not) certain buses is because I couldn't find a simple way to test it. If you tell me how to test/verify this via Ardour, I can give it spin soon-ish. |
Yes, one can use pin-connections to dis/connect individual ports. If all ports of a bus are disconnected, the bus is disabled. PS. I am using Cardinal to test ardour's VST multi-bus support. and disabling busses altogether |
You mean without the 2nd patch this already works as expected? I didnt actually try this yet... btw, once this stabilizes on ardour side, give me a ping. |
Yes, a bus can be disabled completely ( The 2nd patch is needed to disable individual ports without disabling the entire bus. It is closer to VST2's |
No description provided.