【问题标题】:changing the frequency of a soundfile in android更改android中声音文件的频率
【发布时间】:2010-09-17 17:40:54
【问题描述】:

我尝试更改单个声音文件的频率。我设法在 android 中使用 SoundPool 做到了这一点。但结果听起来真的很糟糕。 所以我开始讨论傅立叶变换——但我不确定这是否是我要找的。​​p>

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


这就是我设法做到的方式。 “坏”是指听起来不协调。

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

有没有“简单”的方法来实现这个目标?

【问题讨论】:

  • 听起来不好是什么意思?如果您随机更改频率,我希望它听起来很糟糕..

标签: android audio frequency pitch


【解决方案1】:

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

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

速率可以从 0.5f 到 2.0f 不等,尽管极端情况通常听起来不太好,因此您可能需要设置一个可接受的范围(例如 0.4f)和最小速率(例如 0.85f)。然后你可以有一个变量来控制你在那个范围内的位置(例如,一个介于 .0f 和 1.0f 之间的浮点数):

float rate = RATE_RANGE * pitch + MINIMUM_RATE;

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2011-05-24
  • 2011-05-17
  • 2012-09-02
  • 2013-12-18
  • 2016-02-05
  • 1970-01-01
  • 2023-03-14
  • 2021-08-06
相关资源
最近更新 更多