混响即通过声音在不同路径传播下造成的反射叠加产生的声音特效,在Android中,Google给出了两个实现:EnvironmentalReverb和PresetReverb,其中推荐在游戏场景中应用EnvironmentalReverb,在音乐场景中应用PresetReverb。在创建混响实例时,在音频框架层将会同时创建一个混响引擎。混响的细节由OpenSL ES 1.0.1规范定义。
为了在通过AudioTrack、MediaPlayer进行音频播放时具有混响特效,在构建混响实例时指明音频流的会话ID即可。如果指定的会话ID为0,则混响作用于主要的音频输出混音器(mix)上,混响将会话ID指定为0需要"android.permission.MODIFY_AUDIO_SETTINGS"权限。
EnvironmentalReverb的参数包括:
PARAM_DECAY_HF_RATIO、PARAM_DECAY_TIME、PARAM_DENSITY
PARAM_DIFFUSION、PARAM_REFLECTIONS_DELAY、PARAM_REFLECTIONS_LEVEL
PARAM_REVERB_DELAY、PARAM_REVERB_LEVEL、PARAM_ROOM_HF_LEVEL、PARAM_ROOM_LEVEL等。
PresetReverb的参数包括:
PARAM_PRESET、PRESET_LARGEHALL、PRESET_LARGEROOM、PRESET_MEDIUMHALL
PRESET_MEDIUMROOM、PRESET_NONE、PRESET_PLATE、PRESET_SMALLROOM等。
下面是设置PresetReverb属性的一般过程:
PresetReverb mReverb = new PresetReverb(0, 0);
PresetReverb.Settings settings = mReverb.getProperties();
String str = settings.toString();
settings = new PresetReverb.Settings(str);
short preset = (settings.preset == PresetReverb.PRESET_SMALLROOM) ?
PresetReverb.PRESET_MEDIUMROOM : PresetReverb.PRESET_SMALLROOM;
settings.preset = preset;
mReverb.setProperties(settings);
转载地址:http://www.3g-edu.org/Android_free/art011.htm