我正试图通过WAVEHDR结构修改通过waveInOpen获得的波形数据。我想改变声音的音高。
我所拥有的只是一个指向原始音频数据和已使用字节数的指针。
我有点不知所措,因为我找不到任何关于如何做到这一点的例子。如果能有一个关于如何编辑原始波形数据的起点,我将非常感谢(甚至是一个如何改变音高的例子,都会非常棒)。
谢谢!
您可以通过更改播放速率来更改音高。例如,你以48kHz的采样率记录了一个波形,然后当你回放它时,你告诉系统采样率是96kHz。所有东西的音高都会加倍。此外,播放持续时间会减半,这可能是您不希望的。改变采样率的另一种选择是添加或删除采样,以达到基本相同的效果。与其他答案相反,它不像添加或删除样本那样武断。删除采样时,需要应用低通滤波以防止混叠。插入样本时,需要应用插值过滤器。如果你没有信号处理背景,这些都不是微不足道的。最后,如果你的目标是改变音高,但保持原来的持续时间,那么你需要看看类似相位声码器的东西。