我编写了一个简单的音频单元,它应该交换立体声源的左右声道。此代码的移植版本在 C 中适用于使用 BASS 库的命令行程序,但我无法让相同的代码在 Xcode 中为 audiounit 工作。
对于例如 {1, 2, 3, 4, 5, 6} 的缓冲区输入,我希望立体声反转为 {2, 1, 4, 3, 6, 5}。
我的代码以这种方式正确地反转了样本,但我听到的只是某种低通滤波,而不是样本的立体声反转。
我的输入缓冲区中的前 4 个值是: 0.000104 0.000101 0.000080 0.000113
输出为:0.000101 0.000104 0.000113 0.000080
我是否误解了输入/输出缓冲区的结构方式?
void First::FirstKernel::Process( const Float32 *inSourceP,
Float32 *inDestP,
UInt32 inSamplesToProcess,
UInt32 inNumChannels,
bool &ioSilence )
{
if (!ioSilence) {
const Float32 *sourceP = inSourceP;
Float32 *destP = inDestP;
for (int i = inSamplesToProcess/2; i>0; --i) {
*(destP+1) = *sourceP;
*destP = *(sourceP+1);
sourceP = sourceP +2;
destP = destP +2;
}
}
}