humt
June 27, 2023, 2:16am
1
I am trying to put up an instrument plugin. I am having issues getting the two stereo channels independently. Since I am looking for stereo output, I initialize the buses in my processor as follows -
addEventInput(STR16(Event In), 1);|
addAudioOutput(STR16(AudioOutput), Vst::SpeakerArr::kStereo);|
Now in the process function, I expect to handle the left and right channels independently .
Like
float* leftOutput = data.outputs[0].channelBuffers32[0];
float* rightOutput = data.outputs[0].channelBuffers32[1];
But I get only one channel
float* finalOutput = data.outputs[0].channelBuffers32[0];|
Incidentally the audio is heard on both speakers.
The moment I try
float* rightOutput = data.outputs[0].channelBuffers32[1];
It throws up build error.
What gives ? How can I get access to channelBuffers32[0] and channelBuffers32[1] independently
Which host are you using? Do you have a custom implementation for IAudioProcessor::setBusArrangement(..)
or IAudioProcessor::getBusArrangement(..)
?
humt
June 28, 2023, 1:19am
3
I have tried with multiple DAWs.- SDK included TestHost, Reaper and Cakewalk.
I have not set up any specific bus arrangement with setBusArrangement. Am I supposed to do that ?
Normally not.
What’s the number in data.outputs[0].numChannels?
That all looks correct. Something else must be wrong in your code as the host is required to provide valid buffers in the process function (when numSamples > 0).
humt
June 30, 2023, 2:15am
7
I am not sure what the issue was but setBusArrangements solved the issue.
tresult PLUGIN_API SProcessor::setBusArrangements(Steinberg::Vst::SpeakerArrangement* inputs, int32 numIns, Steinberg::Vst::SpeakerArrangement* outputs, int32 numOuts)
{
// one stereo output bus
if (numIns == 0 && numOuts == 1 && outputs[0] == Vst::SpeakerArr::kStereo)
{
return AudioEffect::setBusArrangements(inputs, numIns, outputs, numOuts);
}
return kResultFalse;
}
1 Like