Hi there.
All the plugins can process 64-bit.
Here’s my process call:
if (m_pAudioProcessor != NULL)
{
Steinberg::Vst::BusInfo busInfo = {};
bool bChannelMismatch = false;
if (m_pProcessComponent->getBusInfo(Steinberg::Vst::kAudio, 0, 0, busInfo) == Steinberg::kResultTrue)
{
if (busInfo.channelCount != m_afInput.GetChannels())
bChannelMismatch = true;
}
if (m_pProcessComponent->getBusInfo(Steinberg::Vst::kAudio, 1, 0, busInfo) == Steinberg::kResultTrue)
{
if (busInfo.channelCount != m_afInput.GetChannels())
bChannelMismatch = true;
}
if (bChannelMismatch)
{
pOutput->JRDSPOutput_OutputDouble(pBuffer, nBlocks);
return;
}
Steinberg::Vst::HostProcessData Data;
m_pProcessComponent->setActive(true);
Data.prepare(*m_pProcessComponent, nBlocks * m_afInput.GetChannels(), Steinberg::Vst::kSample64);
Data.processMode = Steinberg::Vst::kRealtime;
for (int nChannel = 0; nChannel < m_afInput.GetChannels(); nChannel++)
{
for (int nSample = 0; nSample < nBlocks; nSample++)
{
Data.inputs->channelBuffers64[nChannel][nSample] = pBuffer[nSample * m_afInput.GetChannels() + nChannel];
Data.outputs->channelBuffers64[nChannel][nSample] = 0;
}
}
Data.numSamples = nBlocks * m_afInput.GetChannels();
if (m_pAudioProcessor->process(Data) != Steinberg::kResultTrue)
{
// problem processing
}
for (int nChannel = 0; nChannel < m_afInput.GetChannels(); nChannel++)
{
for (int nSample = 0; nSample < nBlocks; nSample++)
{
pBuffer[nSample * m_afInput.GetChannels() + nChannel] = Data.outputs->channelBuffers64[nChannel][nSample];
}
}
Data.unprepare();
// output
pOutput->JRDSPOutput_OutputDouble(pBuffer, nBlocks);
}
Here’s my setup when the audio format arrives:
if ((m_pAudioProcessor != NULL) && (m_pProcessComponent != NULL))
{
m_pProcessComponent->setActive(false);
Steinberg::Vst::ProcessSetup Setup;
Setup.processMode = Steinberg::Vst::kRealtime;
Setup.sampleRate = m_afInput.GetSampleRate();
Setup.symbolicSampleSize = Steinberg::Vst::kSample64;
Setup.maxSamplesPerBlock = 65536;
if (m_afInput.GetChannels() == 2)
{
Steinberg::Vst::SpeakerArrangement Arrangement = Steinberg::Vst::SpeakerArr::kStereo;
int nResult = m_pAudioProcessor->setBusArrangements(&Arrangement, 1, &Arrangement, 1);
if (nResult == Steinberg::kResultFalse)
{
bResult = false; // arrangement not supported
}
}
m_pAudioProcessor->setupProcessing(Setup);
m_pAudioProcessor->setProcessing(true);
m_pProcessComponent->setActive(true);
}
I must be missing something, but I’m not sure what. Thanks so much for any help.