gpt4 book ai didi

c++ - 生成示例音频数据 : trying to generate music plate crackling sound? (C++)

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:36:02 27 4
gpt4 key购买 nike

我尝试这样的代码:

static float shift = 0.0;
double amplitude = 1000000 * pow(10, 1 / 400.0);
for (int i = 0; i < nSampleSize / nBlockAlign; i ++)
{
// Sound :)
Buffer [i] = amplitude * sin((shift + i)) / 100;
}
shift = shift + amplitude * nSampleSize / nBlockAlign ;

return (char *)Buffer;

它通常会给出正确的结果,但方式 2 响亮。如何让它的声音降低 95%?

最佳答案

sin() 将返回一个介于 -1 和 1 之间的值,因此当与数字 x 相乘时,结果将在 -x 和 x 之间变化。
如果 x 大于或小于数组类型的数字边界,则会导致伪影。

Buffer 看起来是一个字符数组,这对于音频缓冲区来说并不常见。

通常它们是整数或 double 。当它是一个整数数组时,幅度应该在 INT_MIN 和 INT_MAX 之间。当它是 double 组时,振幅通常在 -1 和 1 之间变化。

在您的情况下,我会尝试使用 CHAR_MAX? (编辑:并松开“/100”)

但我猜调用函数不需要字符数组,因为振幅最多有 256 个离散的可能值,这将导致音频质量不佳。这个术语称为位深度。

另请查看 sinusoids

关于c++ - 生成示例音频数据 : trying to generate music plate crackling sound? (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4298266/

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