我的iPhone应用程序上有一个OpenAl声音引擎。当我播放我加载的声音时,我可以控制它的音高。
在OpenAl中,设置为1.0的音高无效。如果你把它加倍到2.0,它会弹奏1个八度的音符(12个半音)。如果将它减半,则为0.5,它将是一个八度音程(12个半音)。
所以,我的原始样本正在播放C.我认为如果我将1除以12(半音),我可以获得该八度音中各个音符的音高。但事实似乎并非如此。这让我们认为半音不是平等的价值观。这是真的吗?
是否有人知道如何计算八度音中单个音符的openAl音高值?
谢谢
答案 0 :(得分:11)
半音是相等的比率。因此,如果您的样本是C,C#将是两个的第12个根。如果计算半音C = 0,C#= 1等,则比率为pow(2.0, n*1.0/12.0)
也适用于负数。
我应该注意,在每个调整方案中都不是严格正确的......但这是一个好的开始。如果你真的关心音乐调音的全部复杂性,我可以找到一些参考资料。