gpt4 book ai didi

安卓音频 : change pitch

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:33:32 26 4
gpt4 key购买 nike

SoundPool 的 Android 文档说“该应用程序还可以通过实时调整多普勒或合成效果的播放速率来改变音高”。所以我尝试这样做,使用 setRate 方法从一个音符平滑地变化到另一个音符,但结果很糟糕:声音变化非常参差不齐。这是我试过的代码。请告诉我是否有更好的方法。

int streamId = soundPool.play (soundId, 1, 1, 1, 0, 1.0f);
for (float x = 0; x < 1; x += 0.005) {
SystemClock.sleep (10);
soundPool.setRate (streamId, 1 + x);
}

最佳答案

尽管 Android 文档建议您可以使用 setRate() 来产生多普勒效应,但我不会依赖于每个 android 设备上足够快或足够好的实现。

经济实惠的音频 IC 需要 44kHz 或 48kHz 的固定采样率。因此,采样率转换(即音高修改)必须在软件中完成。因为这包括低级数字运算,所以我确信这是由设备制造商而不是谷歌实现的。鉴于 Android 设备制造商的种类繁多且通常使用低成本硬件,因此肯定有许多采样率转换实现。有的快,有的慢。有的光滑,有的粗糙。

在播放过程中改变转换率会发生什么?如果算法不能将这些 fragment 精确地匹配在一起,则您的音频播放可能会出现短暂的中断。您每 10 毫秒更改一次转换率。如果每 10 毫秒有一次裂纹,则对应于 100Hz 的频率,它本身就是一种音调。这很可能就是您听到的“衣衫褴褛”。

总而言之,我认为使用高级 Android API 在各种 Android 设备上实时模拟乐器是不可能的。不过, native 应用程序可能足够快。

关于安卓音频 : change pitch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7939411/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com