2013-12-20 5 views
4

Android에서 기본적으로 피치를 설정하는 방법과 관련하여 혼란 스럽습니다. OpenSL ES를 사용하는 NDK에서 네이티브 사운드 샘플을 변경해 보았습니다.하지만 인터페이스를 요청할 때 피치와 관련된 모든 것을 SL_RESULT_FEATURE_UNSUPPORTED로 받았습니다. 인터페이스는 시도 : SL_IID_PITCH, SL_IID_RATEPITCH, SL_3DDOPPLER실제로 음높이를 변경할 수있는 Android의 기본 사운드 라이브러리는 무엇입니까?

// create audio player 
const SLInterfaceID ids[3] = { SL_IID_BUFFERQUEUE, SL_IID_PITCH, SL_IID_VOLUME}; 
const SLboolean req[3] = {SL_BOOLEAN_TRUE, SL_BOOLEAN_TRUE, SL_BOOLEAN_TRUE}; 
result = (*engineEngine)->CreateAudioPlayer(engineEngine, &bqPlayerObject, &audioSrc, &audioSnk, 
     3, ids, req); 
assert(SL_RESULT_SUCCESS == result); 

결과는 항상

내 목표는 안드로이드-19

을 SL_RESULT_UNSUPPORTED된다. 나는 쓸모없는 많은 다른 사람을 시도했다. 내가 뭔가 잘못하고 있는거야? Java를 사용하지 않아도되는 대안이 있습니까?

감사합니다.

답변

4

Android에는 최소 구현의 OpenSL이 있으며 해당 인터페이스는 지원되지 않습니다. NDK 문서에서 지원되는 내용 (추가 된 내용) 또는 here을 찾을 수 있습니다. 링크는 NDK의 설명서와 동일합니다.

불행히도 PCM 데이터를 변경하는 알고리즘을 작성하는 것 외에 다른 쉬운 방법은 없습니다.

0

Synthesis ToolKit (STK)에는 피치 이동 효과가있어 사용자에게 도움이 될 수 있습니다. https://ccrma.stanford.edu/software/stk/

데이브 (Dave)가 지적했듯이 네이티브 솔루션이 없습니다. 현재 안드로이드는 좋은 네이티브 오디오 지원을 찾을 곳이 아니라고 생각합니다.