Iphone 如何制作和播放程序生成的啁啾声
我的目标是创建一个“chipper”类。啁啾器应该能够发出程序产生的啁啾声。具体的想法是,啁啾必须按程序产生,而不是预先录制好的声音播放Iphone 如何制作和播放程序生成的啁啾声,iphone,objective-c,audio,avaudioplayer,Iphone,Objective C,Audio,Avaudioplayer,我的目标是创建一个“chipper”类。啁啾器应该能够发出程序产生的啁啾声。具体的想法是,啁啾必须按程序产生,而不是预先录制好的声音播放 在iPhone上实现程序生成的啁啾声最简单的方法是什么?如您所说,您可以使用正弦波来实现,您可以使用sin函数来定义正弦波。创建一个缓冲区,只要您希望样本中的声音,例如: // 1 second chirp float samples[44100]; 然后选择开始频率和结束频率,您可能希望开始频率高于结束频率,例如: float startFreq = 14
在iPhone上实现程序生成的啁啾声最简单的方法是什么?如您所说,您可以使用正弦波来实现,您可以使用sin函数来定义正弦波。创建一个缓冲区,只要您希望样本中的声音,例如:
// 1 second chirp
float samples[44100];
然后选择开始频率和结束频率,您可能希望开始频率高于结束频率,例如:
float startFreq = 1400;
float endFreq = 1100;
float thisFreq;
int x;
for(x = 0; x < 44100; x++)
{
float lerp = float(float(x) / 44100.0);
thisFreq = (lerp * endFreq) + ((1 - lerp) * startFreq);
samples[x] = sin(thisFreq * x);
}
可以在远程I/O单元的渲染回调中使用Nektarios的代码。您甚至可以实时更改波形(低延迟)。您所说的啁啾声是什么意思?你是指普通的方波或锯齿波,还是更复杂的东西?我指的是“基本上是基于短正弦波的声音,但在声音播放过程中,正弦波的频率从高频变为低频”但是,即使是按程序产生的一声平坦的嘟嘟声也是一个不错的开始。你是在问如何产生啁啾声吗?或者如何与音频输出缓冲区接口?或者你是在要求别人为你写东西吗?我是在问,如果有人真的写了东西,你介意分享一些方法吗?如果您有要共享的源,请让它共享。不管你对这个问题知道什么,宝贝,说出来吧。好吧,如果没有其他人尝试回答,我会给你50分。你能链接到播放声音的方法吗?我会使用OpenAL,它应该不会有任何问题,播放这样的缓冲区-添加作为我的帖子的编辑
alGenBuffers (1, &buffer);
alBufferData (buffer, AL_FORMAT_MONO16, buf, size, 8000);
alGenSources (1, &source);
ALint state;
// attach buffer and play
alSourcei (source, AL_BUFFER, buffer);
alSourcePlay (source);
do
{
wait (200);
alGetSourcei (source, AL_SOURCE_STATE, &state);
}
while ((state == AL_PLAYING) && play);
alSourceStop(source);
alDeleteSources (1, &source);
delete (buf)
}