2014-09-09 4 views
0

나는 모든 프레임의 마이크에서 데이터를 읽고 그 피치를 추정하고 싶은 XNA 스크립트를 만들고있다. 나는이 페이지 (http://msdn.microsoft.com/en-us/library/ff827802.aspx)에 거의 근거하여 입력을했다.XNA 마이크 오디오 버퍼 형식?

이제 전체 바이트 버퍼가 있습니다. 그것이 무엇을 나타내는가? 모든 것을 리셋하고 매 10 번째 프레임마다 내 버퍼를 살펴 본다. 따라서 시간이 다른 시점에서 1764 바이트의 9 인스턴스 (전체가 15876 바이트)가있는 거대한 배열 인 것으로 보인다. 마이크 입력 형식에 대한 정보를 찾을 수 없기 때문에 음압의 시간 영역이라고 가정합니다. 아무도 어떻게 작동하는지 알아? 나는 FFT를 가지고있는 친구가 있지만, 우리가 플러그를 꽂기 전에 수집하고있는 그 데이터에 대해 가능한 많은 것을 배우려고합니다.

+0

왜 업데이트 간격이 경과 시간이 아닌 프레임에 있는지 궁금합니다. – FreeAsInBeer

+0

결국 나는 플레이어의 목소리가 자신의 캐릭터를 제어하는 ​​방식이되기를 원하기 때문에 프레임 속도와 일관되게 업데이트하고 싶습니다. 지금은 피치 감지를 실행하고 실행하고 싶습니다. –

+0

XNA에서 작업 한 지 오래되었지만, 선호되는 방법은 경과 된'GameTime' 객체를 기반으로'Update' 메소드 내에서 논리적 업데이트를 수행하는 것이라고 생각합니다. 그들이 XNA와 마지막으로 작업 한 이후로 변경 한 경우 용서해주십시오. – FreeAsInBeer

답변

0

샘플은 Little-Endian 16 비트 선형 PCM. 각 바이트 쌍을 부호있는 short로 변환하십시오.

short sample = (short)(buffer[i] | buffer[i+1] << 8);