6

我的 iPhone 应用程序上有一个 OpenAl 声音引擎。当我播放我加载的声音时,我可以控制它的音高。

在 OpenAl 中,设置为 1.0 的音高没有效果。如果将它加倍到 2.0,它会演奏高 1 个八度音阶的音符(12 个半音)。如果将其减半至 0.5,它将降低一个八度(12 个半音)。

所以,我的原始样本是演奏 C。我假设如果我将 1 除以 12(半音),我可以得到那个八度音阶中各个音符的音高。但情况似乎并非如此。这使我们认为半音不是相等的值。真的吗?

有谁知道我如何计算出八度音阶中单个音符的 openAl 音高值?

谢谢

4

1 回答 1

12

半音是相等的比率。因此,如果您的示例是 C,则 C# 将是 2 的第 12 个根。如果计算半音 C=0、C#=1 等,则比率为pow(2.0, n*1.0/12.0)

也适用于负数。

我应该注意,这并非在每个调优方案中都严格如此……但这是一个好的开始。如果您真的关心音乐调音的全部复杂性,我可以为您找到一些参考资料。

于 2010-02-09T04:14:36.927 回答