我知道
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类?
最佳答案 Android的均衡器和过滤器存在严重问题.它们在不同设备之间不一致(在某些设备根本不可用),并且它们可能表现不佳(高CPU负载).
虽然滤波器是IIR,但是陷波或参数滤波器类型可以配置为非常陡峭的切割.在我的联合创始人的DJ应用程序djplayerapp.com中,他可以用它们削减-100分贝.
文件:http://superpowered.com/docs/class_superpowered_filter.html#details
使用Superpowered Audio SDK,您可以拥有专为移动设备设计的性能最高的过滤器,它们可以在具有相同音频质量的所有Android设备上运行.