使用AVAudioPlayer进行钢琴采样 - 内存管理



我正在编写一个简单的iOS应用程序,其中包括一架钢琴。

只需要一些非常基本的东西,我可能会采用这种方法:

  • 每个钢琴键都有一个.mp3
  • 使用AVAudioPlayer播放.mp3s
  • ,如果合适

我的理解是,一个AVAudioPlayer实例只能与一种声音一起使用。因此,我必须创建许多AVAudioPlayer(准确地说是88),每个钢琴键一个。

我的问题是,AVAudioPlayer内存密集程度如何?我可以通过创建 88 个 AVAudioPlayer s、将它们保存在内存中并根据需要使用它们来初始化程序吗?还是AVAudioPlayer的内存占用太大,我是否应该只在必要时分配/释放AVAudioPlayer?如果是这样,分配/释放播放器是否足够快,以便用户不会注意到任何延迟?

该项目使用 OpenAL SoundBankPlayer 作为该功能的解决方案。另一种方法是使用soundFont和Sampler AudioUnit。针对音乐创作类型的应用程序进行了非常优化。良好的细节和源代码:AudioGraph

最新更新