2011-02-23 72 views
1

我想建立一个渲染回调函数,将加载各种短的声音文件,并(根据我的自定义逻辑)把它们放在我的调音台单元的iOData audioBufferList。如何将aif或caf文件加载到程序中,并将其样本适当地导入到ioData中?加载和选择音频文件到音频单元

回答

2

参见Extended Audio File Services Reference,特别是“ExtAudioFileOpenURL”和“ExtAudioFileRead”。切记不要在渲染回调中耗费太多时间(例如,打开文件可能会耗费时间,确实会分配内存)。

+0

对,我可以使用音频文件服务在ViewDidLoad中加载我的音频文件:但是我的问题的第二部分呢?我会使用ExtAudioFileRead,并将IOData指向Render回调的ioData对象吗? – DanF 2011-02-24 16:05:13

+1

@DanF是,例如: 'OSStatus renderCallback(...,AudioBufferList * ioData){...; UInt32 numFrames = inNumberFrames; ExtAudioFileRef audioFile = //您的文件参考文件以前用ExtAudioFileOpenURL打开 OSStatus结果= ExtAudioFileRead(audioFile,&numFrames,ioData); //检查错误 //实际读取的numFrames可能小于请求(例如,如果EOF)}' – 2011-02-25 02:00:22