用于八度音程中特定音符的OpenAl音高值

时间:2010-02-09 02:58:41

标签: iphone audio openal pitch

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

在OpenAl中,设置为1.0的音高无效。如果你把它加倍到2.0,它会弹奏1个八度的音符(12个半音)。如果将它减半,则为0.5,它将是一个八度音程(12个半音)。

所以,我的原始样本正在播放C.我认为如果我将1除以12(半音),我可以获得该八度音中各个音符的音高。但事实似乎并非如此。这让我们认为半音不是平等的价值观。这是真的吗?

是否有人知道如何计算八度音中单个音符的openAl音高值?

谢谢

1 个答案:

答案 0 :(得分:11)

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

也适用于负数。

我应该注意,在每个调整方案中都不是严格正确的......但这是一个好的开始。如果你真的关心音乐调音的全部复杂性,我可以找到一些参考资料。