2012-10-29 2 views
0

Fmod를 사용하여 마이크 입력의 볼륨을 가져 오려고하지만 getVolume은 항상 0을 반환합니다. 예, 테스트를 완료했으며 마이크가 정상적으로 작동합니다.FMOD에서 볼륨을 감지 할 수 없습니다

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"이 채널에 대해 설정 한 볼륨을 반환한다는 것을 알았습니다. 따라서 전체 질문은 "마이크에서 볼륨을 어떻게 감지합니까?"로 바뀝니다.

답변

1

FMOD는 마이크의 하드웨어 또는 OS 볼륨 레벨에 대한 정보를 제공하지 않습니다.

현재 녹음 신호의 볼륨을 측정하려면 System :: recordStart를 고려하고 FMOD :: Sound를 재생 한 다음 Channel :: getWaveData를 호출하십시오. 원하는대로 봉우리 또는 RMS를 찾는 방법을 웨이브 데이터로 처리 할 수 ​​있습니다.

+0

getWaveData가 더 이상 존재하지 않으므로이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 일부 채널 그룹 내에서 기본 신호를 얻으려면 getWaveData에 의존하고 있었고 64 비트 트랜지션을 만들 때 어떻게 처리해야하는지 확신 할 수 없습니다. – crgt

+1

피크 또는 rms에만 관심이있는 경우 DSP 헤드를 가져 오는 것이 좋습니다. 채널에 대해서는 getMeterigInfo를 사용하십시오. 모든 데이터를보고 싶다면 분석을 수행하고 필요한 곳에 추가하는 간단한 dsp를 만드는 것이 좋습니다. –

+0

Matthew에게 감사드립니다. – crgt