2011-12-20 62 views
1

我正在寫伴奏應用程序,不斷需要播放特定的音符(甚至是和絃)。我有一個線程正在計算出我需要播放哪些音符,但我不知道從哪裏開始瞭解實際播放。我知道我可以創建一個audiotrack並寫一個正弦波,但是對於這個項目來說,一個簡單的音調不會削減它。所以我猜我要麼需要使用MIDI(可以android做到這一點?)或以某種方式採取樣品,並在飛行中改變它的音調,但我不知道這是甚至可能的。如何在Android上播放非正弦音符? MIDI?

+0

可能的重複[Android應用程序的作曲:初學](http://stackoverflow.com/questions/2094812/android-app-for-composing-music-beginner) – 2011-12-20 06:40:37

+0

一個非常快速的搜索引導我到一些有前途的命中,包括上面的SO帖子,或這一個stackoverflow.com/questions/4056846/available-music-api – 2011-12-20 06:42:52

回答

1

我能說的就是檢查出變調(你彷彿聽到的)和的Soundpool(這可能需要一些自己的記錄),這些2個鏈接:

Audio Playback Rate in Android

Programmatically increase the pitch of an array of audio samples

第二個鏈接似乎有更多的信息。

+0

謝謝。好的,所以我可以通過某種倍數改變播放速度,但是如果我想播放某些音符,我該如何確定?如果我有一個樣本C5記錄的樣本,它會像在0.5(一個八度完成)和1.0之間一樣簡單,以1/12爲增量(因此一個增量是12個音符之一)? 乘數= 0.5 +((1.0 - 0.5)*(t/12f)) – 2011-12-21 03:53:36

+0

對不起,但我不知道 – keyser 2011-12-21 13:30:42

+0

@ThePwnStick不要「lerp」。音符以對數形式表示:每個半音以'2 **(1/12)'乘以其下一個音符的頻率。如果你不喜歡數學,你也可以搜索「筆記赫茲」,並找到每張筆記實際頻率的表格。 – 2011-12-23 00:12:59

相關問題