我正在尝试创建一个可以同时播放不同midi文件的应用。这些文件不会流式传输,我想将它们包含在apk中。
最多12个将同时播放...... Mp3或两者的组合也将是一个合适的替代品,但现在midi将是理想的。
这一切都可能吗?先谢谢堆栈溢出的天才! :)
-EltMrx
答案 0 :(得分:3)
播放单个声音的一种简单方法是使用MediaPlayer
。将您的声音文件放在/ res / raw文件夹中,然后使用R
常量调用以下方法,例如playSound(R.raw.sound_file_name)
其中playSound
看起来像这样:
private void playSound(int soundResId) {
MediaPlayer mp = MediaPlayer.create(context, soundResId);
if (mp == null) {
Log.warn("playSound", "Error creating MediaPlayer object to play sound.");
return;
}
mp.setOnErrorListener(new MediaPlayer.OnErrorListener() {
public boolean onError(MediaPlayer mp, int what, int extra) {
Log.e("playSound", "Found an error playing media. Error code: " + what);
mp.release();
return true;
}
});
mp.setOnCompletionListener(new MediaPlayer.OnCompletionListener() {
public void onCompletion(MediaPlayer mp) {
mp.release();
}
});
mp.start();
}
现在,同时播放多个声音有点复杂,但有一个很好的解决方案here。
答案 1 :(得分:2)
正如@uncheck所说,你可以使用标准的Android MediaPlayer
类来播放MP3,虽然一次播放多个频道有点棘手。
Android没有内置合成器,因此如果您想通过某种类型的乐器播放纯MIDI文件,最好的办法是使用libpd for Android。之后,您可能会找到一个PD patch,其中包含一个合适的合成器,可满足您对所需声音的需求。