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

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

Теперь у меня буфер заполнен байтами. Что это означает? Я сбрасываю все и просматриваю свой буфер каждый 10-й кадр, так что он выглядит как гигантский массив, который имеет 9 экземпляров по 1764 байта в разные моменты времени (все это имеет размер 15876 байт). Я предполагаю, что это временная область звукового давления, потому что я не могу найти никакой информации о формате микрофонного входа. Кто-нибудь знает, как это работает? У меня есть друг, у которого работает БПФ, но мы пытаемся узнать как можно больше об этих данных, которые я собираю, прежде чем пытаться их подключить.


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)


Сэмплы представлены в 16-битном линейном PCM с прямым порядком байтов. Преобразуйте каждую пару байтов в короткое со знаком как

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