2013-01-12 2 views
3

나는 android.media.audiofx.Equalizer이 주파수 대역을 획득/저감 할 수 있다는 것을 알고 있습니다. 내가해야 할 일은 주파수 범위를 완전히 필터링하는 것입니다. 주파수를 얻거나 낮추는 데 사용되는 코드는 다음과 같습니다.주파수 범위를 완전히 필터링하는 방법

  Equalizer mEqualizer = new Equalizer(0,audioSessionId); 
     mEqualizer.setEnabled(true); 

     short bands = mEqualizer.getNumberOfBands(); 
     final short minEQLevel = mEqualizer.getBandLevelRange()[0]; 
     final short maxEQLevel = mEqualizer.getBandLevelRange()[1]; 
     mEqualizer.setBandLevel((short) 0, (short) (maxEQLevel)); 
     mEqualizer.setBandLevel((short) 1, (short) (maxEQLevel)); 
//the following code wont work because setting levels.lower than minimum level is not acceptable 
     mEqualizer.setBandLevel((short) 2, (short) (-1000000)); 

내가 요청한 것이 불가능할 경우, 무엇을 제안하겠습니까? 처음부터 FFT 클래스를 작성 하시겠습니까?

+1

수학적으로 주어진 주파수 범위를 완전히 제거하는 것은 불가능합니다. 임의의 양으로 만 줄일 수 있습니다. –

+0

x hz보다 큰 모든 주파수를 필터링하는 것이 불가능합니까? –

+0

예, 동일한 인수가 적용됩니다. –

답변

0

많은 연구 끝에 필자는 DSP 목적을위한 네이티브 FIR 방법이 없다는 것을 알았고 안드로이드를 이퀄라이저에 내장하거나 내 자신의 FIR 필터를 구현해야합니다. Android의 이퀄라이저는 주파수 범위 만 필터링 할 수 있으며 로우 패스 필터를 설정하는 방법은 없습니다.

1

Android의 이퀄라이저 및 필터에 심각한 문제가 있습니다. 장치간에 일관성이 없으며 (일부 장치에서는 전혀 사용 가능하지 않음) 제대로 수행되지 않을 수 있습니다 (높은 CPU로드).

필터는 IIR이지만 노치 또는 파라 메트릭 필터 유형은 매우 가파른 절삭을 위해 구성 할 수 있습니다. 제 공동 설립자의 DJ 응용 프로그램 인 djplayerapp.com에서 그는 -100db를 줄일 수 있습니다.

문서 다음 강력 하진 오디오 SDK를 사용하여 http://superpowered.com/docs/class_superpowered_filter.html#details

당신은 모바일 장치 용으로 설계된 최고 성능의 필터를 가질 수 있습니다, 그들은 동일한 오디오 품질로 모든 안드로이드 장치에서 작동합니다.

관련 문제