简体   繁体   English

如何在 android 中设置混响效果值?

[英]How to set Values for Reverb Effects in android?

I am working on an app that has a reverb feature.我正在开发具有混响功能的应用程序。 I know we can achieve this feature by the PresetReverb and EnvironmentalReverb classes.我知道我们可以通过 PresetReverb 和 EnvironmentalReverb 类来实现此功能。

For customization, we have the EnvironmentalReverb class and I am using this class like this and effects can be notice in the video:对于定制,我们有 EnvironmentalReverb class,我正在使用这个 class,效果可以在视频中看到:

val eReverb = EnvironmentalReverb(1, simpleExoplayer?.audioSessionId!!)
            eReverb.reverbDelay = 5 // [0, 100] done
            eReverb.roomLevel = -1000 // [-9000, 0]
            eReverb.reverbLevel = 2000 // [-9000, 2000]
            eReverb.decayHFRatio = 1000.toShort()
            eReverb.decayTime = 10000
            eReverb.density = 1000.toShort()
            eReverb.diffusion = 1000.toShort()
            eReverb.enabled = true
            val auxEffectInfo = AuxEffectInfo(eReverb.id, 1.0F)
            simpleExoplayer?.setAuxEffectInfo(auxEffectInfo)

Problem: If we want to apply the EnvironmentalReverb values according to the PresetReverb class effects(LARGE_ROOM, LARGE_HALL, MEDIUM_ROOM, etc) then what should be the values of reverbDelay, diffusion, density, etc?问题:如果我们想根据 PresetReverb class 效果(LARGE_ROOM、LARGE_HALL、MEDIUM_ROOM 等)应用 EnvironmentalReverb 值,那么 reverbDelay、扩散、密度等的值应该是多少?

The EnvironmentalReverb source code refers to the OpenSL ES 1.0.1 specification . EnvironmentalReverb 源代码参考了OpenSL ES 1.0.1 规范

Pages 451-452 in that specification lists the following preset definitions:该规范中的第 451-452 页列出了以下预设定义:

#define SL_I3DL2_ENVIRONMENT_PRESET_SMALLROOM \
 { -1000,-600, 1100, 830, -400, 5, 500, 10, 1000, 1000 }
#define SL_I3DL2_ENVIRONMENT_PRESET_MEDIUMROOM \
 { -1000,-600, 1300, 830, -1000, 20, -200, 20, 1000, 1000 }
#define SL_I3DL2_ENVIRONMENT_PRESET_LARGEROOM \
 { -1000,-600, 1500, 830, -1600, 5, -1000, 40, 1000, 1000 }
#define SL_I3DL2_ENVIRONMENT_PRESET_MEDIUMHALL \
 { -1000,-600, 1800, 700, -1300, 15, -800, 30, 1000, 1000 }
#define SL_I3DL2_ENVIRONMENT_PRESET_LARGEHALL \
 { -1000,-600, 1800, 700, -2000, 30, -1400, 60, 1000, 1000 }
#define SL_I3DL2_ENVIRONMENT_PRESET_PLATE \
 { -1000,-200, 1300, 900, 0, 2, 0, 10, 1000, 750 } 

The 10 values listed for each of the presets ought to correspond to the EnvironmentalReverb parameters in the following order: PARAM_ROOM_LEVEL , PARAM_ROOM_HF_LEVEL , PARAM_DECAY_TIME , PARAM_DECAY_HF_RATIO , PARAM_REFLECTIONS_LEVEL , PARAM_REFLECTIONS_DELAY , PARAM_REVERB_LEVEL , PARAM_REVERB_DELAY , PARAM_DIFFUSION , PARAM_DENSITY .为每个预设列出的 10 个值应按以下顺序对应于EnvironmentalReverb参数: PARAM_ROOM_LEVELPARAM_ROOM_HF_LEVELPARAM_DECAY_TIMEPARAM_DECAY_HF_RATIOPARAM_REFLECTIONS_LEVELPARAM_REFLECTIONS_DELAYPARAM_REVERB_LEVELPARAM_REVERB_DELAYPARAM_DIFFUSIONPARAM_DENSITY .

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM