Passing Audio File data to audio thread from user interface

What is the suggested way to read audio data into memory for our audio processors

DataExchangeAPI ? Something else . Any examples on double buffering (not reading the entire file at once ) ?

In VST3, you need to use the host-mediated message passing interface (i.e., IMessage and IConnectionPoint). Both the Controller and Processor implement IConnectionPoint, so you can create and receive messages out of the box. This is an oversimplification, but it’ll get you started:

auto * message = this->allocateMessage();
message->setMessageID( yourCharacterByteMessageId );
message->getAttributes()->setBinary( yourCharacterByteAttributesName, yourData, szYourData );
this->sendMessage(message);
message->release();

You can run that in your Controller. In your Processor’s notify( Steinberg::Vst::IMessage*) you’ll receive the message.

For an example on double-buffering and lock-free Producer-Consumer techniques, I just wrote an article on the subject (shameless plug) at:

nyxfx.dev/vst3-controller-processor-communication-strategies/

I can’t send links, unfortunately.

1 Like

Thank you so much very interesting will check out your link as well !