C#中的音频节拍检测

时间:2011-05-02 14:42:28

标签: c#

使用.NET mscorlib程序集中的System.IO BinaryReader对象,我运行了一个循环,将.wav文件中的每个字节值转储到Excel电子表格中。为简单起见,我将来自信号发生器的两秒4K信号记录到软件序列器中并保存为单声道波形文件。我对音乐进行排序的软件显示1ms的分辨率 - 这是44.11个样本(假设采样率为44.1K)。我感到奇怪的是,通过ReadInt16()方法提取的数据(从.wav文件中的位置44开始)显示了不同的数字,其中整数切换符号似乎是随机的 - 而音序器中的视觉正弦波在幅度方面是完全均匀的。频率。对于16位分辨率,我确定每个样本的第一个字节是频率分辨率,第二个幅度是正确的吗?

问题:如何智能地解释从波形文件中提取的整数,以确定节奏节拍的最终目的?

非常感谢...........米奇

1 个答案:

答案 0 :(得分:3)

对于每个样本16位的WAV文件,样本的第一个字节是频率分辨率而第二个字节是幅度的情况。两个字节一起表示该特定时间点的样本幅度。这两个字节被解释为一个2字节的整数,因此值的范围是-32768到+32767。

我不知道你的音序器是如何工作的或它显示的是什么。根据您的描述,听起来好像您的音序器正在使用FFT将音频从时域(这是WAV文件)转换为频域(这是一个频率沿着x轴和频率幅度的图表) y轴)。 WAV文件不包含频率信息。