Audio XNA麦克风音频缓冲区格式?

Audio XNA麦克风音频缓冲区格式?,audio,xna,buffer,microphone,pitch-tracking,Audio,Xna,Buffer,Microphone,Pitch Tracking,我正在编写一个XNA脚本,在该脚本中,我希望每隔几帧从麦克风读取数据,并估计其音高。我几乎完全基于此页面()进行输入 现在我有了一个满字节的缓冲区。它代表什么?我重置了所有内容,并每隔10帧查看一次缓冲区,因此它看起来是一个巨大的数组,在不同的时间点有9个1764字节的实例(整个过程是15876字节大)。我假设它是声压的时域,因为我找不到任何关于麦克风输入格式的信息。有人知道这是怎么回事吗?我有一个朋友已经启动并运行了FFT,但我们正在尽可能多地了解我正在收集的数据,然后再尝试将其插入。样本在L

我正在编写一个XNA脚本,在该脚本中,我希望每隔几帧从麦克风读取数据,并估计其音高。我几乎完全基于此页面()进行输入


现在我有了一个满字节的缓冲区。它代表什么?我重置了所有内容,并每隔10帧查看一次缓冲区,因此它看起来是一个巨大的数组,在不同的时间点有9个1764字节的实例(整个过程是15876字节大)。我假设它是声压的时域,因为我找不到任何关于麦克风输入格式的信息。有人知道这是怎么回事吗?我有一个朋友已经启动并运行了FFT,但我们正在尽可能多地了解我正在收集的数据,然后再尝试将其插入。

样本在Little Endian 16位线性PCM中。将每对字节转换为带符号的短字符

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

short-sample=(short)(缓冲区[i]|缓冲区[i+1]我很好奇为什么你的更新间隔是基于帧的,而不是基于经过的时间。我最终希望玩家的音高是他们控制角色的方式,所以我希望它能与帧率一致地更新。现在,我只想让音高检测开始运行。我已经有一段时间没有与XN合作了A、 但我认为首选的方法是根据经过的
GameTime
对象在
Update
方法中执行逻辑更新。如果他们在我上次使用XNA后改变了这一点,请原谅。我会记住这一点,但现在我需要弄清楚音频缓冲区存储数据的格式。