0

わかりました、私の数学は少し錆びていて、これは簡単な問題だと思いますが、それでも私はここにいます.

Cocos2d の SimpleAudioEngine には、ピッチ引数があります。次のように定義されています。

1.0が原音

0.5 は 1 オクターブ (12 半音) 低い

2.0 は 1 オクターブ (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 に答える