我对如何在Android上设置音调感到困惑。我尝试从使用OpenSL ES的NDK改变本机声音样本,但是在请求接口时,我得到了一个SL_RESULT_FEATURE_UNSUPPORTED,用于与音调相关的任何事情。接口尝试:SL_IID_PITCH,SL_IID_RATEPITCH,SL_3DDOPPLER
// 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);
结果总是SL_RESULT_UNSUPPORTED
我的目标是android-19。我尝试了很多其他人也无济于事。难道我做错了什么?是否有不需要使用Java的替代方法?
谢谢!
答案 0 :(得分:4)
Android具有OpenSL的最小实现,并且不支持这些接口。您可以在NDK文档中找到支持内容(以及已添加内容)的说明,或here - 该链接与NDK中的文档完全相同。
不幸的是,除了编写自己的算法来改变PCM数据之外别无选择。
答案 1 :(得分:0)
Synthesis ToolKit(STK)具有可能适合您的音高变换效果。 https://ccrma.stanford.edu/software/stk/
戴夫指出,没有原生解决方案。目前,我认为Android不是寻找良好原生音频支持的地方。