Я пытаюсь получить громкость микрофонного входа с помощью Fmod, но getVolume всегда возвращает 0.
Да, я проверил, и мой микрофон работает нормально.
Это работает в цикле:
float tempvolume = 0.0f;
result = channel->getVolume(&tempvolume);
ERRCHECK(result);
//Set the sound volume
channel->getVolume(&tempvolume);
if (tempvolume < 0.1f){
do something
}else{
do something else
}
Но, как я уже сказал, tempvolume всегда равен 0.0
Что я могу сделать?
РЕДАКТИРОВАТЬ:
Теперь я понимаю, что «getVolume» просто возвращает громкость, установленную для канала. Таким образом, теперь весь вопрос меняется на «Как определить громкость с микрофона?»
FMOD не дает никакого представления об аппаратном уровне или уровне громкости ОС для микрофона.
Если вы хотите измерить громкость текущего сигнала записи, рассмотрите System :: recordStart, воспроизведите возвращенный FMOD :: Sound, затем вызовите Channel :: getWaveData. Вы можете обрабатывать волновые данные так, как вам нравится, при поиске пиков или среднеквадратических значений.
Других решений пока нет …