Как использовать несколько типов SuperpoweredFilter в одной аудиосистеме (SuperpoweredAudioIO)

О SuperpoweredFilter (являющемся аналоговым фильтром). Возможно ли иметь два экземпляра для фильтров верхних и нижних частот в одной аудиосистеме (SuperpoweredAudioIO)? Потому что я пробовал разные методы, но объявленный экземпляр последнего типа фильтра слышен только во время выполнения. Пожалуйста помоги

Это мое объявление обоих экземпляров;

filter = new SuperpoweredFilter(SuperpoweredFilter_Resonant_Highpass, samplerate);
filterb = new SuperpoweredFilter(SuperpoweredFilter_Resonant_Lowpass, samplerate);


audioSystem = new SuperpoweredAndroidAudioIO(samplerate, buffersize, false, true, audioProcessing, this, -1, SL_ANDROID_STREAM_MEDIA, buffersize * 2);

           filterb->setResonantParameters(floatToFrequency(1.0f), 0.2f);
           filter->setResonantParameters(floatToFrequency(1.0f), 0.2f);              //resonance
           filterb->enable(true);
           filter->enable(true);

       playerA->play(false);

Также в методе аудиообработки я назвал

filterb->process(stereoBuffer, stereoBuffer, numberOfSamples);  
filter->process(stereoBuffer, stereoBuffer, numberOfSamples); 

person Isaac Oyewole    schedule 31.08.2017    source источник


Ответы (1)


Не понятно, что ты имеешь в виду

слышно только во время выполнения

Вы звоните

filterb->process(stereoBuffer, stereoBuffer, numberOfSamples);  
filter->process(stereoBuffer, stereoBuffer, numberOfSamples);  

в основном методе "процесс"?

Однако, используя приведенную выше последовательность вызовов, если вы установите оба фильтра Fc на 1,0 (то есть 20 кГц), у вас будет следующая ситуация:
Lowpass-> заблокировать все частоты выше 20 кГц (т. е. без звукового эффекта)
затем
Highpass-> блокирует все частоты ниже 20 кГц (т. е. все частоты обрезаются)
поэтому на выходе практически не будет сигнала!
Вы пробовали динамически менять Fc?

person Sandro Sacquegno    schedule 31.08.2017
comment
Да, я пробовал. Извините, я не очень хорошо знаком с родной стороной DSP и некоторыми терминами, которые вы используете, например (FC). Да, я назвал процесс filterb-›(stereoBuffer, StereoBuffer, numberOfSamples); filter-›process(stereoBuffer, StereoBuffer, numberOfSamples); Не могли бы вы предложить способ/фрагмент сделать это? - person Isaac Oyewole; 31.08.2017
comment
Fc — частота среза фильтра, то есть частота, на которой фильтр начинает обрезать более высокие (нижние частоты) или низкие (высокие частоты) частоты сигнала. Начните с CrossExample. Он уже реализует фильтр, Fc которого управляется ползунком. Вы можете продублировать код для добавления второго ползунка и управлять двумя фильтрами Fc независимым образом. - person Sandro Sacquegno; 31.08.2017