Tag: wav

如何从WAV样本数据中提取频率?

我正在用c开发一个应用程序来读取简单的PCM WAV文件。 我的问题是,我应该如何解释数据块中的样本,以便我可以提取样本的频率? 给定WAV示例,原始数据如何表示频率。 例如,这个数据块,24 17 1e f3,对于立体声,16位,左声道样本是,0x1724 = 5924d,意味着5924Hz? 对于签名的样本或人类听不到的频率,怎么可能呢?

从头开始的WAV文件合成 – C.

最近我在CS 101课堂上看到了一个video讲座,它启发我开始使用C语言中的WAV文件格式。我今天的项目一直是使用简单的数学正弦函数创建声音。 尽管有几个障碍,我的程序现在可以接受几个输入(波的频率,波的幅度,采样率等)并创建包含指定音高的wav文件。 但是,在我的电脑扬声器上播放这些音调时,会发出一种奇怪的,有节奏的砰砰声,这种声音会随着采样率的变化而变化。 在较高的采样率下,弹出声音的频率增加并变成恼人的呜呜声。 奇怪的是,弹出的声音在具有相同文件的不同计算机上是一致的。 下面我将发布用于生成WAV文件的代码。 任何可能导致这种现象的见解都将受到赞赏。 这可能只是我某处的一个愚蠢的错误。 🙂 #include #include #include #include #include #include struct WAVHeader { char ChunkID[4]; uint32_t ChunkSize; char RIFFType[4]; }; struct FormatHeader { char ChunkID[4]; uint32_t ChunkSize; uint16_t CompressionCode; uint16_t Channels; uint32_t SampleRate; uint32_t AvgBytesPerSec; uint16_t BlockAlign; uint16_t SigBitsPerSamp; }; struct DataHeader { char ChunkID[4]; uint32_t ChunkSize; }; void […]

如何使用傅里叶变换从WAV文件中提取半精确频率

我们说我有一个WAV文件。 在此文件中,是精确1秒间隔的一系列正弦音。 我想使用FFTW库按顺序提取这些音调。 这特别难吗? 我怎么会这样呢? 另外,将这种音调写入WAV文件的最佳方法是什么? 我假设我只需要一个简单的音频库来输出。 我选择的语言是C.