0

好的,我的数学有点生疏,我觉得这应该是一个简单的问题,但我在这里。

对于 Cocos2d 中的 SimpleAudioEngine,有一个 pitch 参数。定义如下:

1.0 是原始音高

0.5 低一个八度(12 个半音)

2.0 高一个八度(12 个半音)

所以如果我需要:

输入:0 输出:1

输入:-12 输出:0.5

输入:12 输出:2

方程必须是这样的:

f(x) = f(x-1) * 2

但我不记得如何解决这样的方程。谢谢!

4

1 回答 1

0

查找表会更快,但这里有一个等式(在 C# 中):

public double NormalizeScaleStep(int Input)
{
    double Note = 1.0;

    if (Input == 0)
        return Note;

    if (Input > 0)
    {
        for (int Index = 0; Index < Input; Index++)
        {
            Note = Note * 1.059463094;
        }
    }
    else
    {
        for (int Index = Input; Index < 0; Index++)
        {
            Note = Note / 1.059463094;
        }
    }

    return Note;
}
于 2011-07-15T04:12:34.093 回答