Замер громкости звука в реальном времени C/C++

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


Ответы (2 шт):

Автор решения: MBo

Вот прям в С++ такое не встроено. Но в большинстве операционных систем есть подсистемы для работы с аудио и соответственно библиотеки.

И вот, например, bass.dll есть для нескольких ОС, и она обеспечивает работу с нативными средствами ( DirectSound в Windows, CoreAudio в MacOS, не знаю чего там в Android)

→ Ссылка
Автор решения: eri

Я делал так:

открывал устройство захвата (микрофон) в формате PCM, MONO, 8bit unsigned, 8000kHz.

читал с него 1000 байт. вычитал минимум из максимума. 0-тишина, 255-100%

Если вместо PCM ставите U-Law или A-Law то шкала будет растянута по соотвествующим законам. На слух очень похожа на громкость речи.

Если нужен логарифм в дБ то нормируйте к 1 и считайте логорифм.

→ Ссылка