在 Swift 中创建一个函数来播放特定频率的音调 [关闭]

Posted

技术标签:

【中文标题】在 Swift 中创建一个函数来播放特定频率的音调 [关闭]【英文标题】:Creating a Function to Play a Tone of Certain Frequency in Swift [closed] 【发布时间】:2016-01-31 18:34:37 【问题描述】:

我正在寻找一种简单的方法来创建一个函数,该函数将在 Swift 中播放特定频率的音调。到目前为止,我发现的所有内容都需要创建一个单独的类,或者类似的东西。谁能指出一些可以在函数中播放音调(我选择的频率)的代码?

谢谢!

【问题讨论】:

有时像播放Midi/音频这样的复杂需求需要比单个函数存储的代码更多。将音频代码放在单独的类中,然后在您的函数中调用它有什么问题? 好吧,真的没问题,我的代码已经非常庞大,我只是想知道是否有可能在一个简洁的函数中做到这一点。 【参考方案1】:

一般来说,ios 中所有的合成音频都是基于回调(函数或块),应该通过一个包含异步回调函数或块的类来完成,以避免各种问题。可以将所有音频会话设置、音频播放器(单元或队列)初始化和音频合成渲染回调块填充到一个 Swift 函数(加上一些全局状态)中,但它并不简洁(更像是百行 Swift),启动延迟可能会阻塞你的调用线程。

如果您不需要在您的应用中合成音调,您可以预先录制您的音调,将该音频文件包含在您的应用中,然后使用 AVAudioPlayer API 播放。

如果你不需要纯音,另一种可能是使用 CoreMidi 来演奏音符。

补充:我在这个 Gist 中放了一些可以播放给定频率和持续时间的音调的 Swift 3 类的源代码:https://gist.github.com/hotpaw2/630a466cc830e3d129b9 这不是一个单独的函数,而是一个包含回调块的类。

【讨论】:

此类已损坏/有问题,请参阅***.com/a/38938351/1166266 进行修复

以上是关于在 Swift 中创建一个函数来播放特定频率的音调 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

只要用户按住键,如何播放音调?

检测原始音频 (PCM) 中的特定频率/音调

有没有办法通过在 SION 中指定频率而不是音符来播放声音?

在java中录制音频并确定实时是不是播放了x频率的音调,如果是这样的话

如何从 DTMF 音调中获得低频 [关闭]

如何在 Swift3 iOS 中以特定时间在 AVPlayer 中播放视频