我应该使用Queue <float>来存储音频延迟功能的样本吗?

时间:2018-02-26 17:23:15

标签: c# audio queue

我正在为Unity游戏引擎开发音频库。目前,我正在修改延迟课程。它最初使用float []来存储样本。以下是一些限制:

  • 使用所需的延迟时间构造类,并且没有调整数组大小的函数,因此:
    • 使用1000毫秒的延迟构建将在Windows计算机上为您提供48000的数组大小。
    • 您无法更改数组大小,因此不会将延迟增加超过1000毫秒。
    • 将延迟时间减少到0.2秒不会删除阵列中未使用的部分,而且您将携带您不再需要的数据。

所以我认为缓冲区听起来很像一个队列。要写入缓冲区时将值排入队列。等到队列计数达到所需的延迟。当你想要阅读时,将其中一个关闭。我认为这将是一个进步。它就是。它更具可读性和直观性,您可以轻松更改延迟时间。我认为它的内存效率更高,而且只要需要它就只有大小。

然而,它也需要大约两倍的处理时间。我们只讨论3或4个刻度,但是在像Reverb这样使用多个Delay实例的更复杂的过滤器中,在可以使用多个Reverbs的应用程序中,这可能会加起来。

所以我的问题是:我是否正确使用Queue?我应该为此使用其他东西吗?回到使用简单数组并在更改延迟时重写它会更好吗?

0 个答案:

没有答案