2014-09-27 2 views
0

Для активных целей шумоподавления, как бы я генерировал противофазный сигнал с использованием Novocaine? То есть, в пределах NovocaineOutputBlock, как создать выход, который на 180 градусов не соответствует фазе с входом?Активное шумоподавление с помощью Novocaine

Вот мой код до сих пор:

__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? 
     } 
    } 
}]; 
+0

@omygaudio любые идеи? – Marco

ответ

-1

Я задавался вопросом о том же. Моя идея состояла в том, чтобы использовать что-то вроде этого:

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

EDIT Этот фрагмент кода потенциально может быть использован для инвертирования фазы (она может даже не работать). Однако, как правило, более активное подавление шума происходит, чем просто инвертирование фазы, учитывая латентность самого iPhone.