以给定的分贝生成音频轨道声音

时间:2019-03-02 13:00:59

标签: java android volume audiotrack

我正在使用音轨生成具有给定频率和分贝dB的蜂鸣声。音轨中有一种名为

的方法
setStereoVolume()

获得左右音量。在这个库中,音量是如何设置的,幅度由0至-1决定,其中0是最小值,1是最大值,但是我的用户却给出了dB,所以我需要将dB转换为幅度。搜索后,我发现公式为amp = 10^(dB/20)。问题在于,对于该公式,仅-ve dB有效;对于+ ve dB,公式返回大于1的值,这意味着最大值。

audioTrack.setStereoVolume((float) Math.pow(10,volumeL_val/20),(float) Math.pow(10,volumeR_val/20));

我如何将+ ve dB转换为android可接受的0-1范围内的幅度。

1 个答案:

答案 0 :(得分:0)

我的建议是将一个常数乘以整个公式,这将使输出在0-1范围内 即 放大器= 10 ^(dB / 20)* const 其中const应该根据频率而变化