gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-30 03:51:31 24 4
gpt4 key购买 nike

我的目标是创建一个“Chirper”类。唧唧声应该能够发出程序生成的唧唧声。具体思路是,必须按程序生成啁啾声,而不是播放预先录制的声音。

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

无论如何,类似的东西。

如果您想要嗡嗡声或其他声音,请使用不同的波形 - 创建它们以与 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)
}

关于iphone - 如何制作和播放程序生成的啁啾声,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5659522/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com