2010-09-17 79 views
1

我嘗試更改單個聲音文件的頻率。我設法在android中使用SoundPool做到這一點。但結果聽起來很糟糕。 所以我介紹了傅立葉變換 - 但我不確定這是否是我正在尋找的。在android中更改聲音文件的頻率

我想加載單個文件並在每次播放該文件時更改該文件的頻率。所以我可以用一種音調創造出旋律。這可能與android/java?


這是我設法做到的。 「壞」我的意思是它聽起來不合格。

如果我想播放文件中音符的下一個頻率,我必須乘以2 ^(1/12)。但是因爲它只是一個浮點數,所以我想它不夠精確,無法獲得下一個音符的「真實」頻率。

有沒有一種「簡單」的方法來實現這一目標?

+2

您是什麼意思,聽起來不好?我期望它聽起來不好,如果你隨機改變頻率.. – 2010-09-17 18:33:27

回答

0

用的Soundpool最簡單的方法是調整速度上你的電話打():

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

的率可以從.5f來2.0F,雖然極端一般不會聲音很大,所以你可能想要設置一個可接受的範圍(例如.4f)和一個最小速率(例如.85f)。然後,您可以有一個變量來控制該範圍內的位置(例如,浮動範圍介於.0f和1.0f之間):

float rate = RATE_RANGE * pitch + MINIMUM_RATE; 
+0

我使用率參數有困難 - 請參閱http://stackoverflow.com/questions/2291531/android-soundpool-rate-range。其他人是否遇到過這種情況,或者有解決方法? – Chris 2010-09-17 21:48:28