iOS:在iPad上发出声音,给出Hz参数?

时间:2011-02-23 11:49:07

标签: ipad ios audio

在其中一个iOS图层中是否有API可用于通过指定其赫兹来生成音调。我要做的是产生DTMF音调。此链接说明DTMF音调如何由2个音调组成:

http://en.wikipedia.org/wiki/Telephone_keypad

这基本上意味着我需要同时播放2个音调......

所以,这样的事情是否存在:

SomeCleverPlayerAPI(697,1336);

如果整个上午都在寻找这个,并找到了多种播放声音文件的方法,但没有关于如何生成特定音调的方法。有谁知道,请...

2 个答案:

答案 0 :(得分:4)

查看AU(AudioUnit)API。这是非常低级别的,但它可以做你想要的。一个好的介绍(可能已经给你你需要的东西)可以在这里找到:

http://cocoawithlove.com/2010/10/ios-tone-generator-introduction-to.html

答案 1 :(得分:3)

没有iOS API为您执行此音频合成。

但您可以使用音频队列或音频单元RemoteIO API播放原始音频样本,生成2个正弦波总和样本数组(比如44100个样本值1秒),然后将结果复制到音频回调中(1024个样本,或一次回调请求)。

请参阅Apple的aurioTouch和SpeakHere示例应用程序,了解如何使用这些音频API。

样本可以通过以下简单的方式生成:

sample[i] = (short int)(v1*sinf(2.0*pi*i*f1/sr) + v2*sinf(2.0*pi*i*f2/sr));

其中sr是采样率,f1和f1是2个频率,v1 + v2总和小于32767.0。您可以为此添加舍入或噪声抖动以获得更清晰的结果。

请注意点击生成的波形是否在末端逐渐变为零。