Я использую звуковую дорожку для генерации звукового сигнала с заданной частотой и дБ.в звуковой дорожке есть метод с именем
setStereoVolume()
, который получает левый и правый объем.однако в этой библиотеке громкость устанавливается по амплитуде, которая находится в диапазоне 0 -1, где 0 - это минимум, а 1 - это максимум, но мои пользователи вместо этого дают дБ, поэтому мне нужно преобразовать дБ в амплитуду.после поиска я нашел формулу как amp = 10^(dB/20)
.проблема в том, что для этой формулы работает только -ve дБ, для + ve дБ формула возвращает значение выше 1, что означает макс.
audioTrack.setStereoVolume((float) Math.pow(10,volumeL_val/20),(float) Math.pow(10,volumeR_val/20));
как я могу конвертировать + ve дБ в амплитуду в диапазоне 0-1, что приемлемо для Android.