C++ 如何转换可以复制到asio缓冲区的vsti音频数据并生成正确的语音?

C++ 如何转换可以复制到asio缓冲区的vsti音频数据并生成正确的语音?,c++,audio,vst,steinberg-asio,C++,Audio,Vst,Steinberg Asio,我正在尝试用vsti和asio发出声音。我已经将midi事件转换为vst事件,然后调用“processReplacing”函数使vsti音频流如下所示: 浮点*输入[64] 浮点*输出[2] m_效应->过程替换(m_效应、输入、输出、m_块大小) 但当我将“输出”数据复制到asio缓冲区时,它会发出噪音 memcpy(asioDriverInfo.bufferInfos[i].buffers[index],outputs[index],m_blockSize) 在复制asio缓冲区之前,vs

我正在尝试用vsti和asio发出声音。我已经将midi事件转换为vst事件,然后调用“processReplacing”函数使vsti音频流如下所示:

浮点*输入[64]

浮点*输出[2]

m_效应->过程替换(m_效应、输入、输出、m_块大小)

但当我将“输出”数据复制到asio缓冲区时,它会发出噪音

memcpy(asioDriverInfo.bufferInfos[i].buffers[index],outputs[index],m_blockSize)


在复制asio缓冲区之前,vsti音频数据是否需要任何转换?如果您能帮助我,我将不胜感激!

通常,VST插件(float[-1,1])和音频驱动程序(ASIO)之间的示例表示形式不同,后者可以是uint或其他类型。还要注意单独通道(L/R)的编码方式。所以你需要阅读ASIO并将VST插件浮动转换成ASIO想要的任何东西。是的,这就是我不知道如何转换的要点。不过,感谢您的replyLinear将每个样本的[-1,1]范围转换为ASIO想要的=>我认为32位整数(lsb)是常见的(尽管超过24位可能会有些过分)。谢谢,我觉得通过您的话可以获得一些指导,我将了解更多关于ASIO类型的知识(如ASIOSTInt24LSB、ASIOSTInt32LSB等)