Я пытаюсь создать функцию обратного вызова рендеринга, которая будет загружать различные короткие звуковые файлы и (согласно моей пользовательской логике) помещать их в аудиобуферлист iOData моего микшерного модуля. Как загрузить файл aif или caf в программу и соответствующим образом импортировать его образцы в ioData?
Загрузка и выбор аудиофайлов в аудиоустройства
Ответы (1)
См. Справочник по расширенным аудиофайловым службам. , в частности «ExtAudioFileOpenURL» и «ExtAudioFileRead». Помните, что в обратном вызове рендеринга не нужно делать ничего, что отнимает слишком много времени (например, открытие файла может считаться трудоемким, выделение памяти определенно таковым является).
person
Jon Burgess
schedule
24.02.2011
Итак, я могу использовать службы аудиофайлов для загрузки моих аудиофайлов в ViewDidLoad:, но как насчет второй части моего вопроса? Буду ли я использовать ExtAudioFileRead и указывать iOData на объект ioData обратного вызова Render?
- person DanF; 24.02.2011
@DanF Да, например:
OSStatus renderCallback(..., AudioBufferList *ioData) { ...; UInt32 numFrames = inNumberFrames; ExtAudioFileRef audioFile = // Your file ref previously opened with ExtAudioFileOpenURL OSStatus result = ExtAudioFileRead(audioFile, &numFrames, ioData); // Check for error // numFrames actually read may be less than request (e.g. if EOF) }
- person Jon Burgess; 25.02.2011