2014-09-09 2 views
0

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

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

+0

Мне любопытно, почему вы основываете интервал обновления на фреймах, а не на прошедшее время. – FreeAsInBeer

+0

В конечном итоге я хочу, чтобы звук голоса игрока соответствовал их характеру, поэтому я хотел бы, чтобы он постоянно обновлялся с частотой кадров. На данный момент я просто хочу, чтобы детектор высоты был запущен. –

+0

Прошло некоторое время с тех пор, как я работал с XNA, но я считаю, что предпочтительным методом является выполнение логических обновлений в методе «Update» на основе прошедшего объекта GameTime. Простите меня, если они изменили это, поскольку я в последний раз работал с XNA. – FreeAsInBeer

ответ

0

Образцы находятся в Little-Endian 16-битный линейный PCM. Преобразуйте каждую пару байтов в подписанный короткий как

short sample = (short)(buffer[i] | buffer[i+1] << 8); 
Смежные вопросы