使用AVAudioPlayer播放攻击/延音(循环)/衰减的最佳方式

umo*_*mop 5 iphone audio avaudioplayer iphone-sdk-3.0 audioqueue

我在查找没有转换中断的攻击(声音开始)/延音(循环声音)/衰减(声音结束)序列时遇到问题.是否有任何好的库来处理这个,或者我应该用AVAudioPlayer自己动手?AudioQueue是一个更好看的地方吗?我曾经使用过SoundEngine.cpp,但这已经有一段时间了.CAF仍然是最好的格式吗?

谢谢!

Mus*_*sis 3

从你的描述来看,听起来好像你正在尝试编写一个软件合成器。您可以用于此类操作的唯一方法AVAudioPlayer是将音符的整个持续时间编写为单个 WAV 文件,然后使用AVAudioPlayer.

要创建任意持续时间的音符声音,先响应用户操作(例如点击按钮)开始播放,然后继续播放直到第二个用户操作(例如点击“停止”按钮或将手指从第一个按钮上移开) ) 开始将循环区域的音量降至零(“释放”部分)的过程,您将需要使用AudioQueue(AVAudioPlayer可用于播放完全在内存中构建的音频,但整个播放必须在播放开始之前构建,这意味着您无法响应用户操作来更改正在播放的内容[除了停止播放之外])。

这是另一个问题/答案,简单地展示了如何使用AudioQueue. AudioQueue每当需要加载更多数据来播放时,就会调用回调方法 - 您必须实现循环和封装原始 WAV 文件数据的所有代码。