2009-09-09 8 views
5

마이크 데이터를 실시간으로 처리하고 재생할 수있는 크로스 플랫폼 애플리케이션을 작성하고 싶습니다. 사람들이 서로 이야기하고 목소리에 필터를 적용 할 수있는 대화방을 개념 증명으로 상상해보십시오. OpenAL은 이에 적합합니까? 그렇지 않다면 누군가가 대안을 제시 할 수 있습니까? 또한 누군가가 마이크에서 읽고 출력물을 꺼내는 간단한 "hello world"프로그램에 나를 제공하거나 링크 할 수 있다면 그것은 대단 할 것입니다.마이크에서 OpenAL 실시간 오디오 프로세싱

감사합니다.

+0

나는 이것에 대해서도 관심이있다. 아무도 대답하지 못함 = – CptAJ

답변

-1

Apple에는 두 가지 샘플 (또는 그 이상)이 있습니다. aurioTouch 및 SpeakHere를 확인하십시오. aurioTouch는 마이크 입력을 받아서 재생할 수 있으며 SpeakHere는 입력을 받아 녹음 할 수 있습니다. 그러면 꽤 쉽게 다시 재생할 수 있습니다.

2

OpenAL은 기술적으로 API를 사용할 수 있지만 Apple의 iOS 용 구현에는 오디오 캡처 기능이 포함되어 있지 않습니다.

iOS에서 오디오 대기열 또는 오디오 장치를 사용하여 녹음해야합니다. 실시간 효과를 적용하기 위해 오디오 단위는 오디오 대기열보다 훨씬 복잡하지만 이동 방법입니다.

3

OpenAL은 이러한 목적에 적합하지 않을 수 있습니다. SDL (아마도 SDL_Mixer) 또는 PortAudio를 사용하는 것이 좋습니다. 둘 다 크로스 플랫폼이며 둘 다 사용하기 쉽습니다.

이 목적으로 OpenAL을 사용하려면 숨겨진 순환 버퍼에 몇 개의 샘플이 누적되었는지 알아보기 위해 폴링해야합니다. 그런 다음 준비가되었다고 결정할 때 그들을 잡아 당깁니다. 그런 다음 필터를 적용합니다. 그런 다음 필터링 된 데이터를 버퍼에 첨부합니다. 그런 다음 버퍼에 소스 버퍼를 대기시키고 소스가 재생할 것임을 알려줍니다 (이미 재생중인 경우 제외). 제 생각에 OpenAL의 장점은 3D 효과를 적용하는 데 있습니다. 실시간 필터링에 큰 영향을 미치지는 않지만, 출력에 대해 좀 더 지연을 기꺼이 받아들이면 기꺼이 효과를 발휘할 것으로 기대합니다. 필자는 필터링을 위해 버퍼 객체 모델보다 콜백 모델을 선호합니다.


편집 : 주석이 하나가 처리를 둘 것입니다 어디 지적 OpenAL: How to create simple "Microphone Echo" programm? : I은 정확히이 이상 할 것이 몇 가지 코드를 기록했다.