【发布时间】:2012-03-11 21:08:20
【问题描述】:
我正在尝试this example 中的代码,基本上我想限制播放的样本数量。
现在,一旦您点击播放按钮,应用就会以设置的频率播放音调,但在您点击停止之前它不会停止。我只想播放一秒钟的声音。
知道怎么做吗?我已经尝试将 inNumberFrames 更改为 44100,但所做的只是让我的语气不稳定。
// 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;
}
}
编辑
Kurt Revis 说 CoreAudio 反复调用您的 RenderTone() 函数。我没有想到这一点,但我想这是有道理的。但这确实使我想到了另一个问题:如果我想将 4 分钟的歌曲发送到缓冲区会发生什么? (44100 * 60 * 4 个样本)
如果 RenderTone 方法被重复调用,我猜它每次都会从头开始播放样本。如何播放一长串样本?
【问题讨论】:
标签: ios audio core-audio sampling trigonometry