如何将AudioUnitSampleType转换为与Dirac LE一起使用

时间:2013-07-21 20:58:39

标签: ios audiounit pitch-shifting

我对这个问题感到疯狂。我正在使用Dirac LE来执行音高变换,但是库总是会为最终转换添加大量点击。我需要在AudioUnit的Callback函数中实时进行转换。

除转换外,所有设置都正常。

我认为问题是从8.24(AudioUnitSampleType)转换为short类型(由Dirac使用)并返回到8.24。

for(int i=0; i<inNumberFrames; i++) {
    faudioIn[0][i] = (SInt16)(outSamplesChannelLeft[i] >> 9);
    faudioIn2[0][i] = (SInt16)(outSamplesChannelRight[i] >> 9);
}
long framesOut  = DiracFxProcess(1.0, 1.0, faudioIn, faudioOut, inNumberFrames, THIS.mDirac1);
long framesOut2 = DiracFxProcess(1.0, 1.0, faudioIn2, faudioOut2, inNumberFrames, THIS.mDirac2);

for(int i=0; i<inNumberFrames; i++) {
    UInt32 val = (faudioOut[0][i]<0)?0xFF000000:0x00000000;
    outSamplesChannelLeft[i] = (faudioOut[0][i] << 9 ) | val;
    val = (faudioOut2[0][i]<0)?0xFF000000:0x00000000;
    outSamplesChannelRight[i] = (faudioOut2[0][i] << 9) | val;
}

拜托,任何人都可以发布一个有效的例子吗? 非常感谢!

0 个答案:

没有答案