gpt4 book ai didi

c++ - 在播放时更改音频信号的增益会导致伪影

转载 作者:行者123 更新时间:2023-11-28 00:25:56 28 4
gpt4 key购买 nike

我在程序中播放音频文件,在音频渲染回调中,我对输入信号应用增益乘数并将其添加到输出缓冲区。下面是一些伪代码来说明我的操作:

void audioCallback(AudioOutputBuffer* ao, AudioInput* ai, int startSample, int numSamples){
for (int i=startSample; i<numSamples+startSample; i++){
ao[i] = ai[i]*gain;
}
}

基本上我只是将数据乘以某个乘数。在这种情况下,gain 是一个 float 成员,正在通过 GUI 回调进行调整。如果我在音频仍在播放时调整此值,我可以听到当我移动 slider 时音频变得更柔和或更响亮,但我听到很多小的爆裂声和咔哒声。

不太确定这笔交易是什么。我知道插值,如果音频音高偏移我会这样做,但我不确定我是否需要做任何额外的插值或者如果在音频文件播放完成之前实时调整增益。

如果我在音频开始播放之前调整 slider ,增益设置正确并且我没有听到任何咔嗒声。

我是不是漏掉了什么?除了输入信号的乘法器之外,还有什么增益可以实现?

最佳答案

问题:乘法运算符如何知道哪个操作数是音频信号,哪个是增益?答:不是。 它们都是音频信号,任何一个中的任何声音都可以在输出中听到。

平坦、不变的信号不会产生任何可听见的声音。只要增益保持不变,它就不会引入任何自己的声音。

突然变化的信号将非常可听见,听起来像咔哒声,包含很多高频。

正如您自己确定的那样,减少高频内容从而降低可听度的一种方法是使用恒定斜率在多个样本上扩展变化。这在您有大量时间进行增益更改的应用中肯定足够了。

另一种方法是对增益信号运行低通滤波器,并将那个用作乘法的输入。

关于c++ - 在播放时更改音频信号的增益会导致伪影,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25112055/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com