Iphone 如何制作和播放程序生成的啁啾声

Iphone 如何制作和播放程序生成的啁啾声,iphone,objective-c,audio,avaudioplayer,Iphone,Objective C,Audio,Avaudioplayer,我的目标是创建一个“chipper”类。啁啾器应该能够发出程序产生的啁啾声。具体的想法是,啁啾必须按程序产生,而不是预先录制好的声音播放 在iPhone上实现程序生成的啁啾声最简单的方法是什么?如您所说,您可以使用正弦波来实现,您可以使用sin函数来定义正弦波。创建一个缓冲区,只要您希望样本中的声音,例如: // 1 second chirp float samples[44100]; 然后选择开始频率和结束频率,您可能希望开始频率高于结束频率,例如: float startFreq = 14

我的目标是创建一个“chipper”类。啁啾器应该能够发出程序产生的啁啾声。具体的想法是,啁啾必须按程序产生,而不是预先录制好的声音播放


在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) 
}