gpt4 book ai didi

c - 尝试制作波表振荡器

转载 作者:行者123 更新时间:2023-11-30 17:32:50 24 4
gpt4 key购买 nike

我正在尝试为我正在从事的音频项目制作一个波表振荡器,但由于某种原因我似乎无法做到正确。诚然,这是我幼稚的实现。

void BuildTable()
{
table = (float*)malloc(tableSize * sizeof(float));
for(int i = 0; i < tableSize; i++)
{
table[i] = sin((i * 2 * PI * frequency) / samplerate);
}
}

void Process(float* buffer, int count, float frequency, int elapsedSamples)
{
float increment = tableSize * (frequency / samplerate);
float position = fmodf(elapsedSamples * increment, tableSize);
for (int i = 0; i < count; i++)
{
float sample = table[(int)floorf(position)];
buffer[i] = sample;
position += increment;
if (position > tableSize) position -= tableSize;
}
}

其输出是无意义的嗡嗡声和噪音。

我做错了什么?

最佳答案

问题似乎出在 BuildTable 上。人们通常会使用完整的正弦波周期来初始化该表,如下所示:

for(int i = 0; i < tableSize; i++)
{
table[i] = sin(i * 2 * PI / tableSize);
}

而不是特定的频率和采样率。

关于c - 尝试制作波表振荡器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23985569/

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