【发布时间】:2015-11-24 00:20:31
【问题描述】:
我正在尝试修改通过waveInOpen 通过WAVEHDR-structs 获得的波形数据。我想改变声音的音高。
我只有一个指向原始音频数据和使用字节数的指针。
我有点迷茫,因为我找不到任何关于如何做到这一点的例子。 我将非常感谢您提供了一个关于如何编辑原始波形数据的起点(或者甚至是如何更改音高的示例)。
谢谢!
【问题讨论】:
标签: c++ windows visual-c++ audio waveform
我正在尝试修改通过waveInOpen 通过WAVEHDR-structs 获得的波形数据。我想改变声音的音高。
我只有一个指向原始音频数据和使用字节数的指针。
我有点迷茫,因为我找不到任何关于如何做到这一点的例子。 我将非常感谢您提供了一个关于如何编辑原始波形数据的起点(或者甚至是如何更改音高的示例)。
谢谢!
【问题讨论】:
标签: c++ windows visual-c++ audio waveform
您可以通过更改播放速率来更改音高。例如,您以 48kHz 的采样率录制了一个波形,然后当您播放它时,您告诉系统采样率为 96kHz。一切的音调都会加倍。此外,您可能不希望播放持续时间减半。改变采样率的另一种方法是添加或删除样本以达到基本相同的效果。与其他答案相反,它不像添加或删除样本那样随意。当您删除样本时,您需要应用低通滤波来防止混叠。在插入样本时,您需要应用插值过滤器。如果您没有信号处理背景,这些都不是微不足道的。最后,如果您的目标是改变音高但将持续时间保持在原始持续时间,那么您需要查看相位声码器之类的东西。
【讨论】: