我的目标是为iPhone / iOS创建一个采样器乐器。
乐器应播放不同音高/音符的声音文件,并且应具有音量包络。
音量包络表示,当尼特开始播放时,音量逐渐减弱。
我尝试了无数种方式来创建它。理想的方法是使用AVAudioEngine的AVPlayerNode,然后实时处理该节点的各个样本。
不幸的是,到目前为止,我在这种方法上还没有成功。您能否给我一些有关iOS中工作方式的指导?
谢谢,
托比亚斯
PS:我没有学习核心音频框架。也许可以访问AVAudioNodes音频单元来执行此工作,但是我还没有时间阅读Framework。
最佳答案
一种更底层的方法是从文件中读取音频并处理音频缓冲区。
您将ADSR存储在一个数组或更好的数组中,这是一个数学函数,可以根据传递的声音索引(使用插值)输出包络值。因此,包络映射到任何声音的持续时间。
然后,将音频样本与返回的包络值相乘以得到过滤后的样本。
一种方法是使用AVAudioNode并将处理节点链接到它。