在进入扬声器之前处理声波

时间:2012-10-26 11:24:57

标签: android audio processing

有没有什么方法可以处理播放前播放器输入的声波?我想更改不同频率的分贝值。 谢谢

2 个答案:

答案 0 :(得分:1)

这取决于您想要应用的效果类型。您可以使用SoundPool.setRate来简单地更改音高。如果您想获得更复杂的效果,请考虑使用AudioEffect

  
    

我想更改不同频率的分贝值。

  

这正是Equalizer效果的作用。您可以使用Equalizer.getBand检索所需频率的频段,然后使用Equalizer.setBandLevel更改其级别。

答案 1 :(得分:0)

如果你的意思是在数字到模拟转换之前,那么不,你不能从应用程序那样做。您可以做的是在将音频写入AudioTrack实例之前处理音频,或者使用Andrei建议的AudioEffect处理音频。在这两种情况下,音频可能仍会通过平台音频DSP中的其他滤波器(例如,多频段压缩,峰值限制,均衡以补偿所使用的特定扬声器组件等)。

听起来我想修改频域中的音频信号,所以你可以看一下,例如FFTW,它有一个C接口和一个Java包装器,因此您可以根据您最熟悉的内容使用本机代码和Java代码。我自己从未使用它,所以我无法提供有关如何将其集成到Android项目中的任何信息。