在Windows中更改原始波形数据的音高
Changing the pitch of raw waveform data in Windows
我正试图通过WAVEHDR结构修改通过waveInOpen获得的波形数据。我想改变声音的音高。
我所拥有的只是一个指向原始音频数据和已使用字节数的指针。
我有点不知所措,因为我找不到任何关于如何做到这一点的例子。如果能有一个关于如何编辑原始波形数据的起点,我将非常感谢(甚至是一个如何改变音高的例子,都会非常棒)。
谢谢!
您可以通过更改播放速率来更改音高。例如,你以48kHz的采样率记录了一个波形,然后当你回放它时,你告诉系统采样率是96kHz。所有东西的音高都会加倍。此外,播放持续时间会减半,这可能是您不希望的。改变采样率的另一种选择是添加或删除采样,以达到基本相同的效果。与其他答案相反,它不像添加或删除样本那样武断。删除采样时,需要应用低通滤波以防止混叠。插入样本时,需要应用插值过滤器。如果你没有信号处理背景,这些都不是微不足道的。最后,如果你的目标是改变音高,但保持原来的持续时间,那么你需要看看类似相位声码器的东西。
相关文章:
- 防止主数据类型C++的隐式转换
- 用于访问容器<T>数据成员的正确 API
- 嵌套在类中时无法设置成员数据
- 使用流处理接收到的数据
- 静态数据成员的问题-修复链接错误会导致编译器错误
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 在cuda线程之间共享大量常量数据
- C++将文本文件中的数据读取到结构数组中
- 如何在C++中序列化结构数据
- 在C++中打印指向不同基元数据类型的指针的内存地址
- 通过套接字[TCP]传输数据 如何在C / C ++中打包多个整数并使用send() recv()传输数据
- 在c代码之间共享数据的最佳方式
- 链表,反向函数,数据结构
- 数据成员SFINAE的C++17测试:gcc vs clang
- C++浮点数据类型和字符串数据类型无法子到模板函数中
- 如何对点云数据进行排序
- 从矢量<无符号字符>转换为字符* 包括垃圾数据
- 尝试通过OCI例程从Oracle获取blob数据,但出现错误:ORA-01008:并非所有变量都绑定
- 将数据从缓冲区写入磁盘上的波形文件
- 在Windows中更改原始波形数据的音高