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

标签 c++ vst

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

我已经实现了一个可以正常工作的高通滤波器。现在我正在尝试用二次函数做一些非线性失真。在我执行了下面的几行代码并将插件加载到主机中之后,我立即从插件中得到了一个输出——你什么也听不到,但是仪表已经很高了。

我真的想不通为什么。发生数学运算的 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];

编辑:我向每个函数添加了日志文件输出,并且发生了,processReplacing 函数被永久调用,不仅在播放打开时......但是为什么呢?

最佳答案

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

VST 插件针对实时 效果处理。不要将其混淆或误解为前瞻。所谓实时,是指将插件插入 channel 并在 DAW 录音时演奏乐器。所以你可以看到,为了减少延迟,主机总是向插件发送音频缓冲区(无论是否静音)。

关于c++ - XCode 4.6 上的 VST - 插件在加载时直接提供高输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16719881/

相关文章:

VST 插件的 MIDI 输出

audio - 为DAW制作音频插件

audio - 记住Max/Msp中的VST预设

android - 编写时间按Android AudioTrack排序

c++ - 如何向前和向后扫描 __uint128_t(128 位)?

c++ - std::to_string 在转换浮点值时是否保证包含小数点?

c++ - 取消对 unique_ptr 的引用

C# 如何从禁用或断开连接的网络适配器(接口(interface))获取默认网关(路由)及其指标?

c++ - 设置 libsndfile 库生成的 ogg 文件的比特率

c++ - VST 插件是如何制作的?