我正在查看这个关于 iOS 上声音生成的示例,因为我需要做类似的事情,但有些部分我不明白,我希望有人可以帮助我。
在这部分代码中:
double theta_increment = 2.0 * M_PI * viewController->frequency / viewController->sampleRate;
// Generate the samples
for (UInt32 frame = 0; frame < inNumberFrames; frame++)
{
buffer[frame] = sin(theta) * amplitude;
theta += theta_increment;
if (theta > 2.0 * M_PI)
{
theta -= 2.0 * M_PI;
}
}
我真的不明白这theta += theta_increment;
部分是干什么用的。对我来说,在 for 循环中做这样的事情更有意义:
buffer[frame] = sin(theta_increment * frame);
知道为什么那行不通吗?另外,我不知道这部分代码的用途是什么:if (theta > 2.0 * M_PI)
因此也非常欢迎对此进行任何解释。