XCode 4.6上的VST - 插件在加载时直接提供高输出

时间:2013-05-23 17:05:53

标签: c++ vst

我正在使用XCode 4.6编写Steinberg VST插件。

我已经实现了一个正常工作的Highpass过滤器。现在我试图用二次函数做一些非线性失真。在我实现了下面的几行并将插件加载到主机后,我立刻得到了插件的输出 - 你什么都听不到,但是仪表高了。

我真的无法想象为什么。只有在播放声音时才应调用发生数学运算的processReplacing函数,而不是在加载插件时调用。当我删除下面的几行代码时,一切都没问题,听起来是正确的,所以我认为它与插件代码的其余部分无关。

问题发生在两台主机上,所以它可能不是VST错误。 有没有人遇到类似的问题?

非常感谢, 费边

void Exciter::processReplacing(float** inputs, float** outputs, VstInt32 sampleFrames){

  for(int i = 0; i < sampleFrames; i++) {

    tempsample = inputs[0][i];


//Exciter - Transformation in positive region, quadratic distortion and backscaling

    tempsample = tempsample + 1.0f;        
    tempsample = powf(tempsample, 2.0f);
    tempsample = tempsample / 2.0f;
    tempsample -= 1.0f;        


//Mix-Knob: Dry/Wet ------------------------------------------------

    outputs[0][i] = mix*(tempsample) + (1-mix)*inputs[0][i];

编辑:我为每个函数添加了logfile-outputs,并且它发生了,不仅在打开播放时永久调用processReplacing函数......但是为什么?

1 个答案:

答案 0 :(得分:3)

你几乎用自己的编辑回答了这个问题。 processReplacing被重复调用。这是VST规范的一部分。

VST插件针对实时效果处理。不要混淆或误解为预见。实时,我的意思是将插件插入通道并在DAW录制时播放乐器。所以你可以看到,为了减少延迟,主机总是向插件发送一个音频缓冲区(无论是否静音)。