改变android中声音文件的频率

时间:2010-09-17 17:40:54

标签: android audio frequency pitch

我尝试更改单个声音文件的频率。我设法在Android中用SoundPool做的事情。但结果听起来真的很糟糕。 所以我介绍了傅里叶变换 - 但我不确定这是否是我正在寻找的。

我想加载单个文件,并在每次播放该文件时更改该文件的频率。所以我可以用一种音调创作旋律。这可能与android / java?


这是我设法做到的方式。 “糟糕”,我的意思是听起来不合时宜。

如果我想播放文件中音符的下一个频率,我必须乘以2 ^(1/12)。但由于它只是一个浮动,我想它不够精确,无法获得下一个音符的“真实”频率。

是否有“简单”的方法来实现这一目标?

1 个答案:

答案 0 :(得分:0)

SoundPool最简单的方法是调整play()调用的速率:

play(aSoundId, leftVolume, rightVolume, 1, 0, rate);

速率可以在.5f到2.0f之间变化,尽管极值通常听起来不太好,因此您可能希望设置可接受的范围(例如,.4f)和最小速率(例如,.85f)。然后你可以有一个变量来控制你在该范围内的位置(例如,浮点范围在.0f和1.0f之间):

float rate = RATE_RANGE * pitch + MINIMUM_RATE;