【问题标题】:audio sample frequency pitch音频采样频率音高
【发布时间】:2015-03-18 17:58:43
【问题描述】:

我试图找出如何改变样本块的音高。 到目前为止,我一直在使用 smbPitchShift 代码,但有人告诉我音高转换可以通过简单的频率转换来完成。

假设现在我有 2000 个样本块,以 44100hz 的频率运行。 我如何设法将音高上移 2 个八度(24 个半音)? 这家伙说它只是1/频率的转换,我不太明白。

它是我尝试用 C++ 开发的 VST 插件。

谢谢。

【问题讨论】:

  • 您是要保持节奏,还是可以将速度提高 4 倍?
  • 不,我需要保持节奏,基本上总是像输入一样保持在 2000 个样本。

标签: c++ audio frequency pitch


【解决方案1】:

这并不像听起来那么简单......

如果您不需要保留共振峰,一种方法是将您的样本时间拉伸 4 倍,并在最后重新采样(插值)4 倍,此步骤音高会改变您的音频。

要拉伸,您通常需要一些音高跟踪算法,在时域中,一些已知代码是 PSOLA、WSOLA、TDHS、SOLA、VSOLA...

要在频域中拉伸,您可以使用相位声码器。

记住没有共振峰会产生恶魔/花栗鼠效应。

【讨论】:

    猜你喜欢
    • 2017-03-04
    • 2011-01-06
    • 2019-02-06
    • 1970-01-01
    • 2012-06-18
    • 1970-01-01
    • 2021-10-26
    • 2011-09-19
    相关资源
    最近更新 更多