我正在创建一个节拍器作为大型应用程序的一部分,我有一些非常短的wav文件可以用作单个声音。我想使用AVAudioEngine,因为NSTimer存在显着的延迟问题,而Core Audio似乎在Swift中实现起来相当困难。我尝试了以下操作,但目前无法实现前3步,我想知道是否有更好的方法。
代码概述:
- 根据节拍器的当前设置(每个小节的节拍数和每个节拍的细分),创建一个文件URL数组(对于节拍的文件A,对于细分的文件B)
- 根据节奏和文件长度,以适当数量的静音帧数编程创建一个wav文件,并将其插入到每个声音之间的数组中。
- 将这些文件读入单个AudioBuffer或AudioBufferList中
audioPlayer.scheduleBuffer(buffer, atTime:nil, options:.Loops, completionHandler:nil)
到目前为止,我已经能够播放单个声音文件的循环缓冲区(第4步),但我还没有能够从文件数组构建缓冲区或编程地创建静音,也没有找到任何解决方案在StackOverflow上解决此问题。所以我猜这不是最好的方法。
我的问题是:是否可以使用AVAudioEngine安排一系列声音,并具有低延迟,然后循环该序列?如果不行,那么在使用Swift编写代码时,哪个框架/方法最适合安排声音?