我一直在网上搜索,但没有白费。
我正在使用Steinberg的CST VST SDK。我正在开发一个效果插件,我需要知道声音文件的长度,这意味着它内部的帧数。所以我知道processReplacing函数的块大小或(sampleFrames)。
void processReplacing (float **inputs, float **outputs, VstInt32 sampleFrames)
任何人都知道如何获取整个声音文件中的总帧数?
提前感谢您的帮助,
答案 0 :(得分:6)
我认为您对VST效果插件的实现方式存在误解。
通常,VST设置为实时音频处理,重复调用渲染函数,其值为sampleFrames
,与系统的处理延迟有关,并且可能位于区域为256或更少。
实现processReplacing()
时,将处理结果写入outputs
指向的缓冲区 - 这些缓冲区由宿主应用程序传递给您,并保证有sampleFrames
的空间在他们中。
答案 1 :(得分:2)
我认为这不可能产生影响。你有没有想过合成而不是效果? 所以你可以提供自己的样品.. “processReplacing”只能从主机应用程序获取样本,这可能是一切(现场无尽的音乐,样本等) 也许你必须重新考虑你的插件设计。