我正在开发一种可同时播放64个音频源的音频工具。因此,我创建了四个数组,每个数组包含16个音频源。每个音频源阵列都被路由到其自己的混音器。此外,两个混音器输出到左声道,两个在右声道。我的DSP缓冲区大小设置为“最佳性能”,这意味着1024个样本,并且有足够的真实/虚拟声音可用。
开始时,将60个音频源设置为Volume = 0,而其中四个在Volume = 0.5的情况下运行。在每个Update()帧中,我将播放0.5的那些音频的音量设置为零,因此将之前为零的四个新音频源设置为0.5。
类似这样的东西:
void SwitchSources()
{
noseposInd++;
if (noseposInd > 15) noseposInd = 0;
audioSources_Lm[noseposIndTemp].volume = 0.0f;
audioSources_Ln[noseposIndTemp].volume = 0.0f;
audioSources_Rm[noseposIndTemp].volume = 0.0f;
audioSources_Rn[noseposIndTemp].volume = 0.0f;
audioSources_Lm[noseposInd].volume = 0.5f;
audioSources_Ln[noseposInd].volume = 0.5f;
audioSources_Rm[noseposInd].volume = 0.5f;
audioSources_Rn[noseposInd].volume = 0.5f;
noseposIndTemp = noseposInd;
}
出于测试目的,我将f = 2Hz(导致每秒听得见的咔嗒声)的矩形信号加载到每个Audiosource中。使用Audacity记录我的输出结果会在所附照片中看到一些东西:
似乎四个信号之一的缓冲区没有写入输出,因为与正脉冲或负脉冲有关的幅度仅为一半。 “缺口”的宽度恰好是一个块长。意味着有1024个采样,采样率为44.1kHz,因此23ms左右没有输出。
增加音量的变化率也会增加陷波次数/超时的发生,但是这可以被称为。有人遇到过同样的问题吗?或者可以提供一些有关Update()方法和混频器的音频块编写方式如何产生干扰的知识吗?
谢谢!