我正在使用音轨来生成具有给定频率和分贝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转换为0-1范围内的幅度(Android可以接受)。
我的建议是将一个常数值乘以整个公式,这将使输出在0-1范围内即放大器= 10 ^(dB / 20)* const其中const应该根据频率而变化]