Измеритель уровня громкости просто отображает кратковременную амплитуду сигнала в логарифмическом масштабе (дБ).Вам необходимо непрерывно измерять амплитуду (RMS) сигнала в течение короткого интервала времени (например, 10 мс), а затем преобразовывать среднеквадратичную величину в дБ и обновлять отображение индикатора.
RMS_signal (V) = sqrt(sum(x^2) / N)
, где N - этоколичество выборок (например, N = 441 для выборки 10 мс при частоте выборки 44,1 кГц)
Magnitude (dB) = 20.0 * log10(RMS_signal) + K
, где K - калибровочная постоянная (смещение дБ).
Вы также можете захотетьдобавьте фильтр нижних частот, чтобы сгладить отображаемую амплитуду.См. stackoverflow.com / questions / 2167513 .