如何制作和播放程序生成的Chi声

|| 我的目标是创建一个“ Chirper”类。 r声应能够发出程序生成的chi声。具体想法是必须按程序生成the声,而不是播放预先录制的声音。 在iPhone上获得程序生成的chi声的最简单方法是什么?     
已邀请:
您可以使用您所说的正弦波来实现,您可以使用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);
}
反正就是这样。 而且,如果您想要嗡嗡声或其他声音,请使用不同的波形-创建它们以使其与sin非常相似,并且可以互换使用它们。这样,您可以创建saw()sqr()tri(),并且可以执行诸如将它们组合以形成更复杂或更多样化的声音的操作 ======================== 编辑- 如果您想玩游戏,那么应该可以使用OpenAL在这些方面做一些事情。重要的是使用OpenAL或类似的iOS API来播放原始缓冲区。
    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) 
} 
    
使用RemoteIO音频单元 iOS的音频单元托管指南 您可以在远程I / O单元的渲染回调中使用Nektarios的代码。您甚至还可以实时更改波形(低延迟)。     

要回复问题请先登录注册