1

私はこの問題に夢中になっています。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;
}

誰でも実際の例を投稿できますか? どうもありがとう!

4

0 に答える 0