Android上的原生声音库可以实际改变音高?

时间:2013-12-20 20:06:33

标签: android c++ audio android-ndk opensl

我对如何在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的替代方法?

谢谢!

2 个答案:

答案 0 :(得分:4)

Android具有OpenSL的最小实现,并且不支持这些接口。您可以在NDK文档中找到支持内容(以及已添加内容)的说明,或here - 该链接与NDK中的文档完全相同。

不幸的是,除了编写自己的算法来改变PCM数据之外别无选择。

答案 1 :(得分:0)

Synthesis ToolKit(STK)具有可能适合您的音高变换效果。 https://ccrma.stanford.edu/software/stk/

戴夫指出,没有原生解决方案。目前,我认为Android不是寻找良好原生音频支持的地方。