Не удалось определить громкость в FMOD

Я пытаюсь получить громкость входа микрофона с помощью 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" просто возвращает громкость, которую вы установили для канала. Таким образом, весь вопрос теперь меняется на «Как мне определить громкость микрофона?»


person Magicaxis    schedule 29.10.2012    source источник


Ответы (1)


FMOD не дает представления об уровне громкости аппаратного обеспечения или операционной системы для микрофона.

Если вы хотите измерить громкость текущего записываемого сигнала, рассмотрите System::recordStart, воспроизведите возвращенный FMOD::Sound, затем вызовите Channel::getWaveData. Вы можете обрабатывать волновые данные так, как вам нравится, ища пики или среднеквадратичное значение по мере необходимости.

person Mathew Block    schedule 20.12.2012
comment
Как лучше всего это сделать теперь, когда getWaveData больше не существует? Я полагался на getWaveData, чтобы получить базовый сигнал в некоторых группах каналов, и я не уверен, что делать сейчас, когда я делаю 64-битный переход. - person crgt; 15.07.2015
comment
Если вас интересуют только пиковые или среднеквадратичные значения, рассмотрите возможность получения заголовка DSP для канала, а затем используйте getMeterigInfo. Если вы хотите просматривать все данные, рассмотрите возможность создания простого процессора обработки данных, который выполняет анализ, и добавляйте его туда, где он вам нужен. - person Mathew Block; 16.07.2015
comment
Спасибо, Мэтью, попробую. - person crgt; 16.07.2015