2011-02-23 3 views
1

다양한 짧은 사운드 파일을 불러오고 (내 사용자 정의 로직에 따라) 믹서 유닛의 iOData audioBufferList에 넣어주는 콜백 콜백 함수를 빌드하려고합니다. 프로그램에 aif 또는 caf 파일을로드하고 ioData에 해당 샘플을 적절하게 가져 오려면 어떻게해야합니까?오디오 유닛에 오디오 파일 불러 오기 및 선택

답변

2

Extended Audio File Services Reference, 특히 "ExtAudioFileOpenURL"및 "ExtAudioFileRead"를 참조하십시오. 렌더링 콜백에 너무 많은 시간을 소비하지 않도록하십시오 (예 : 파일 열기는 시간이 많이 걸리는 것으로 간주 될 수 있으며 메모리를 확실히 할당 할 수 있습니다).

+0

그래, 오디오 파일 서비스를 사용하여 ViewDidLoad에서 오디오 파일을로드 할 수 있지만, 내 질문의 두 번째 부분은 어떻게됩니까? ExtAudioFileRead를 사용하고 렌더링 콜백의 ioData 객체에서 iOData를 가리 킵니까? – DanF

+1

@DanF 예 (예 : ) OSStatus renderCallback (..., AudioBufferList * ioData) {...; UInt32 numFrames = inNumberFrames; ExtAudioFileRef audioFile = // ExtAudioFileOpenURL을 사용하여 이전에 연 파일 참조 OSStatus result = ExtAudioFileRead (audioFile, & numFrames, ioData); // 오류 확인 // 실제로 읽은 numFrames가 요청보다 작을 수 있습니다 (예 : EOF 인 경우)}' –