gpt4 book ai didi

multithreading - 多线程波表合成器单击。这是由于阅读中断造成的吗?

转载 作者:行者123 更新时间:2023-12-03 00:25:13 26 4
gpt4 key购买 nike

我目前正在开发一个非常基本的波表合成器。我将尽力给出一个可以理解的概述。

我有一个具有4096点的查找波形,该波形由音频线程采样。但是,通常,单个振荡器具有多个波形,可以通过position参数进行变形。例如,让我们采取两个正弦波,其中第二个正弦波的周期是第一个正弦波的一半。当我们以frequency = 440Hzposition = 0.5播放这些声音时,我们会听到440Hz和880Hz处两个同样响亮的音调。这是a link to the audio(请参阅旁注2)。

Frequency spectrum of the 440Hz and 880Hz sine waves

由于性能原因,只要位置参数发生更改,我都会在另一个线程上生成查找表。这就是我的问题。即使当我不更改表的位置而只是定期生成查询表时,也会出现奇怪的,不可预测的故障。由于表中的音频数据在这种情况下不会改变,因此我只能通过撕裂的读取来解释这一点。那是对的吗?如果是这样,我该如何解决?完成生成数据后,我是否将双缓冲区与原子指针交换一起使用?

Same frequency spectrum, but with glitches

再次,这是the audio for this recording(请参阅旁注2)。
另外,一些示波器数据:

Oscilloscope Image where such a glitch is visible

旁注1 :填充我的查找表时需要使用未经优化的~50,000ns和经过优化的~10,000ns。但是故障似乎以相同的概率发生。

旁注2 :我上载音频的网站似乎引入了一些奇怪的谐波,这些谐波在我的视频中听不到。请注意。

最佳答案

找到了!生成查询表后,我不小心设置了旧的扫描仪位置。如果后者花费的时间太长,则我的位置基本上会早些恢复到几微秒,这可以解释示波器的视觉挫折。

关于multithreading - 多线程波表合成器单击。这是由于阅读中断造成的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60743123/

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