Замер громкости звука в реальном времени C/C++
Помогите или дайте подсказку, нужно что бы программа каждый заданный промежуток времени замеряла громкость звука поступающего на микрофон и отображала его численно, например минимальный звук 0, а максимальный 250
Ответы (2 шт):
Вот прям в С++ такое не встроено. Но в большинстве операционных систем есть подсистемы для работы с аудио и соответственно библиотеки.
И вот, например, bass.dll
есть для нескольких ОС, и она обеспечивает работу с нативными средствами ( DirectSound в Windows, CoreAudio в MacOS, не знаю чего там в Android)
Я делал так:
открывал устройство захвата (микрофон) в формате PCM, MONO, 8bit unsigned, 8000kHz.
читал с него 1000 байт. вычитал минимум из максимума. 0-тишина, 255-100%
Если вместо PCM ставите U-Law или A-Law то шкала будет растянута по соотвествующим законам. На слух очень похожа на громкость речи.
Если нужен логарифм в дБ то нормируйте к 1 и считайте логорифм.