2015-04-11 3 views
0

Я использую Novocaine для определения частоты - и он отлично работает. Я высоко ценю каркас Novocaine, так как он прост в использовании и прост в использовании.Частотный анализ - новокаин и прохождение через микрофон: как отключить выход динамиков?

Во всяком случае, есть только одна проблема: захват звука с микрофона iPhone/iPad, я хочу отключить выход динамика, чтобы предотвратить акустическую обратную связь (шум). Как я могу это сделать? До сих пор я тщетно пытался изменить маршрут вывода аудио. Любые идеи высоко ценятся!

Конечно, я узнал, что независимо от структуры Novocaine я могу отключить аппаратный звук, но когда я это делаю, пользователь получает вид всплывающей подсказки («звук отключен»), который может раздражать пользователь. Я предпочитаю временно отключать звук, как только пользователь нажимает кнопку «захват звука», не замечая этого.

ответ

0

Решение тривиально и я нашел его почти случайно:

в выходном блоке

[audioManager setOutputBlock:^(float *data, UInt32 numFrames, UInt32 numChannels) 
{ ... } 

я просто установить выходные данные к нулю - после анализа (с FFT или свертку или крестом корреляция или что еще):

// silence the sound in order to disable sound feedback 
    for(int i=0; i<numFrames; i++) { 
     data[i] = 0.0; 
    } 

Вот и все!