0

アクティブ ノイズ キャンセリングの目的で、Novocaine を使用して逆位相信号を生成するにはどうすればよいですか? つまり、 内でNovocaineOutputBlock、入力と 180 度位相がずれている出力を生成する方法は?

これまでの私のコードは次のとおりです。

__weak AppDelegate * wself = self;

self.ringBuffer = new RingBuffer(32768, 2);
self.audioManager = [Novocaine audioManager];

[self.audioManager setInputBlock:^(float *data, UInt32 numFrames, UInt32 numChannels)
{
    wself.ringBuffer->AddNewInterleavedFloatData(data, numFrames, numChannels);
}];

[self.audioManager setOutputBlock:^(float *data, UInt32 numFrames, UInt32 numChannels)
{
    wself.ringBuffer->FetchInterleavedData(data, numFrames, numChannels);

    for (int i=0; i < numFrames; ++i)
    {
        for (int iChannel = 0; iChannel < numChannels; ++iChannel)
        {
            // Within here do noise cancellation. How?
        }
    }
}];
4

1 に答える 1

-1

私は同じことを疑問に思っていました。私の考えは、次のようなものを使用することでした:

data[i*numChannels + iChannel] *= -1;

編集このコードは、位相を反転するために使用される可能性があります (機能しない場合もあります)。ただし、iPhone 自体の遅延を考慮すると、アクティブ ノイズ キャンセレーションには通常、単に位相を反転させるだけではありません。

于 2015-01-13T18:20:35.963 に答える