How to transmit input audio data to editor

I am developing a VST3 host DAW. When I load the Fabfilter effect plugins such as Pro-Q3, the behavior in my software is inconsistent with other DAWs. There should be waveform displayed on the editor GUI but I didnt see it. A fabfilter developer told me that they implement proper separation between the processor and controller. If the UI looks like it isn’t receiving any audio data, that means I’m not transmitting messages from the processor to the controller.
I checked the VST3 SDK but I couldn’t find the function to transmit input audio data to editor. I hope someone could tell me the correct way to do it, thank you so much.

The Host has to implement a minimum required interfaces like IMessage :
Host Requirements for VST 3 Support - VST 3 Developer Portal (steinbergmedia.github.io)
The host could implement the new interface (since VST 3.7.9) IDataExchangeHandler [3.7.9] Data Transfert Between Processor/Controller - VST 3 Developer Portal (steinbergmedia.github.io).

Try to check your host with the hostchecker plug-in: VST 3 Plug-in Examples - VST 3 Developer Portal (steinbergmedia.github.io)

1 Like

Hi Yvan, thanks for your tips. I spent some time reading the content about IMessage. I setup a connection between processor and controller using IConnectionPoint. Then I overrided the notify function. The hostchecker shows that these features are already supported. But the fabfilter plugins doesnt send any messages to the notify function. I still wonder what should a host do to handle different types of messages. When I load a plugin that I have never seen before, how could I know where to send the audio sample data to its editor since different plugins use different methods.

The host should handle the message has black box…when a message is coming from the processor, the host has to post it to controller and vice-versa controller to processor. Check the implementation example in the SDK:
public.sdk/source/vst/utility/connectionproxy.cpp
in order to optimize the transfert the host could implement the new API (since VST 3.7.9) IDataExchangeHandler [3.7.9] Data Transfert Between Processor/Controller - VST 3 Developer Portal (steinbergmedia.github.io).

The host does not have to explicitly send audio to the controller.

Yvan, thanks for your detailed reply. Im trying to implement the ConnectionProxy, hope it may work

Obviously its enough to just implement the “black box” interaction, which need this messaging with IMessage/IConnectionPoint using these definitions in plug provider

IPtr<ConnectionProxy> componentCP;
IPtr<ConnectionProxy> controllerCP;

in “public.sdk\source\vst\hosting\connectionproxy.cpp”
I always send dstConnection->notify(message); if dstConnection is non-zero

However, the input is finally visualized in the plugin, but the output audio seems yet not to be correctly affected. What could be still missing there?
Since this question here was about the audio input I created this new one here for the output