Формат на аудио буфер на микрофон XNA?

Работя върху XNA скрипт, в който искам да чета данни от микрофона на всеки няколко кадъра и да оценявам неговата височина. Взех информация въз основа почти точно на тази страница (http://msdn.microsoft.com/en-us/library/ff827802.aspx).

Сега имам буфер, пълен с байтове. Какво представлява? Нулирам всичко и преглеждам буфера си на всеки 10-и кадър, така че изглежда, че е гигантски масив, който има 9 екземпляра от 1764 байта в различни моменти във времето (цялото нещо е голямо 15876 байта). Предполагам, че това е времевата област на звуковото налягане, защото не мога да намеря информация за формата на входа на микрофона. Някой знае ли как работи това? Имам приятел, който има работещ FFT, но ние се опитваме да научим колкото можем повече за данните, които събирам, преди да се опитаме да го включим.


person Warman Steve    schedule 09.09.2014    source източник
comment
Любопитно ми е защо базирате интервала си на актуализация на рамки, а не на изминало време.   -  person FreeAsInBeer    schedule 09.09.2014
comment
В крайна сметка искам височината на гласа на играча да бъде начинът, по който контролира характера си, така че бих искал да се актуализира последователно с честотата на кадрите. Засега просто искам да стартирам разпознаването на височината.   -  person Warman Steve    schedule 09.09.2014
comment
Измина известно време, откакто съм работил с XNA, но вярвам, че предпочитаният метод е да се извършват логически актуализации в рамките на метода Update въз основа на изминалия обект GameTime. Извинете ме, ако са променили това, откакто последно работих с XNA.   -  person FreeAsInBeer    schedule 09.09.2014
comment
Ще го имам предвид, но засега трябва да разбера в какъв формат аудио буферът съхранява данните.   -  person Warman Steve    schedule 09.09.2014


Отговори (1)


Пробите са в Little-Endian 16-битов линеен PCM. Преобразувайте всяка двойка байтове в кратко като със знак

short sample = (short)(buffer[i] | buffer[i+1] << 8);
person p10ben    schedule 28.06.2017