Изменить объем от поплавка образцов

Как увеличить или уменьшить громкость аудиосигнала, который выражается числом с плавающей запятой (float).

Это просто умножение?

float volume_control(float signal, float gain) {

return signal*gain;

}

Как вы можете управлять этой функцией, скажем, в децибелах, как в:

volume_control (x, 28) // должен увеличиться на 28 дБ.

0

Решение

Да, просто умножьте. Если вы выводите его, не забудьте зафиксировать выход в [0, 1] или [-1, 1] в зависимости от ваших соглашений.

В децибелах используйте:

return signal * pow( 10.0f, db * 0.05f );

Увидеть вики на децибелах.

2

Другие решения

Да, выигрыш просто умножается на коэффициент. Коэффициент усиления 1,0 не изменяет громкость (0 дБ), 0,5 уменьшает его в 2 раза (-6 дБ), 2,0 увеличивает его в 2 раза (+6 дБ).

Чтобы преобразовать усиление в дБ в подходящий коэффициент, который можно применить к значениям выборки:

double gain_factor = pow(10.0, gain_dB / 20.0);
2

громкость аудиосигнала, выраженная числом с плавающей запятой (float)

Первое, что вам нужно сделать, это выяснить, что на самом деле означает этот поплавок. Это может быть регулятор громкости, измеряемый в дБ, это может быть выборка, представляющая собой количество электричества, которое посылается на динамик в определенное время, это может быть выборка, которая представляет собой положение динамика в конкретный момент времени.

Если это «амплитуда» звуковой волны в определенный момент времени, то приведенные выше расчеты являются точными. Но тот факт, что звук был выражен как поплавок, ничего не говорит вам о том, что означает поплавок.

1
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector