2011-12-20 31 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

相关问题