好的,我的数学有点生疏,我觉得这应该是一个简单的问题,但我在这里。
对于 Cocos2d 中的 SimpleAudioEngine,有一个 pitch 参数。定义如下:
1.0 是原始音高
0.5 低一个八度(12 个半音)
2.0 高一个八度(12 个半音)
所以如果我需要:
输入:0 输出:1
输入:-12 输出:0.5
输入:12 输出:2
方程必须是这样的:
f(x) = f(x-1) * 2
但我不记得如何解决这样的方程。谢谢!
好的,我的数学有点生疏,我觉得这应该是一个简单的问题,但我在这里。
对于 Cocos2d 中的 SimpleAudioEngine,有一个 pitch 参数。定义如下:
1.0 是原始音高
0.5 低一个八度(12 个半音)
2.0 高一个八度(12 个半音)
所以如果我需要:
输入:0 输出:1
输入:-12 输出:0.5
输入:12 输出:2
方程必须是这样的:
f(x) = f(x-1) * 2
但我不记得如何解决这样的方程。谢谢!
查找表会更快,但这里有一个等式(在 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;
}