有没有办法在我的Android应用程序中制作midi声音?

时间:2011-06-14 16:40:01

标签: android audio mp3 midi

我正在尝试创建一个可以同时播放不同midi文件的应用。这些文件不会流式传输,我想将它们包含在apk中。

最多12个将同时播放...... Mp3或两者的组合也将是一个合适的替代品,但现在midi将是理想的。

这一切都可能吗?先谢谢堆栈溢出的天才! :)

-EltMrx

2 个答案:

答案 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,其中包含一个合适的合成器,可满足您对所需声音的需求。