私はこの問題に夢中になっています。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;
}
誰でも実際の例を投稿できますか? どうもありがとう!